2016-07-26 31 views
4

Ich versuche, die https://github.com/lsegal/my_toy_compiler zu folgen, aber obwohl es für LLVM 3.8.0 aktualisiert wurde, kann ich es nicht mit LLVM 3.8.4 von brew mit --with-clang --with-lld --with-jit --with-python kompilieren. Speziell bekomme ich den folgenden Fehler, use of undeclared identifier 'getGlobalContext'.Bindung gegen LLVM 3.8.4 no getGlobalContext

Zusätzlich erscheint das Symbol getGlobalContext weder im Verzeichnis /usr/local/opt/llvm/include/llvm/IR/LLVMContext.h noch irgendwo im Verzeichnis /usr/local/opt/llvm/include.

Ich erwarte, dass entweder diese Funktion kürzlich veraltet ist (für die ich keine Beweise gefunden habe), oder dass ich sie nicht richtig aufbaue.

Alle Tipps würden wir uns freuen.

HINWEIS Ich habe Trouble linking against LLVM with project including Flex and Bison gesehen und es konnte das Problem nicht besonderes Problem

Antwort

1

ich das gleiche Problem mit 4.0.0 Version aus dem SVN gebaut haben. Ich habe die 266.379 folgenden begehen gefunden mit der Beseitigung aller Vorkommen von getGlobalConfig()

https://reviews.llvm.org/rL266379

Diese Änderungen Beispiele begehen entweder definieren interne Kontextvariable:
War
static IRBuilder<> Builder(getGlobalContext());

Werde:
static LLVMContext TheContext;
static IRBuilder<> Builder(TheContext);

+0

Dank. Ich sollte erwähnen, dass ich mein Problem lösen konnte, indem ich nur die neuesten Zips aus der Quelle (Version 3.8.etwas) erstellte, aber das ist auch eine gute Information. – Mobius

3

Ich stieß auch auf das gleiche Problem mit Llvm 4.0. Meine Lösung ist wie folgt.

alt:

LLVMContext *llvmcx; 
    llvmcx = &getGlobalContext(); 

neu:

LLVMContext *llvmcx; 
static LLVMContext MyGlobalContext; 
llvmcx = &MyGlobalContext;