Temat: Dlaczego LVM nie działa?

Wykonuję według http://www.kloxo.webminos.eu/st-Transcompiler
% llvm-g++ -emit-llvm x.cpp -o program.bc -c
pokazuje się:
Potential incompatible plugin version. GCC: 4.6 (20120301). Expected: 4.6 (20120301)
Defines 'dragonegg_disable_version_check' as env variable to remove this warning
Please note that unexpected errors might occur.

% llc -march=c program.bc -o x.c
jest błąd:
llc: program.bc:1:1: error: expected top-level entity
ELFP4(
^

Również gdy wg. http://llvm.org/docs/GettingStarted.html#tutorial4
% clang -O3 -emit-llvm hello.c -c -o hello.bc
dobrze się kompiluje, jednak
% lli hello.bc
lli: hello.bc: Invalid MODULE_CODE_GLOBALVAR record

W internecie sugerują że podobno wersja DragonEgg się nie zgadza, ale wszystko było na nowo zainstalowane, oczekuje wersji 4.6 i ma tę wersję.
Jarosław P.

Jarosław P. IT, JBG-2 Sp. z o.o.

Temat: Dlaczego LVM nie działa?

A spróbowałeś jak sugeruje komunikat:

export dragonegg_disable_version_check=yes
llvm-g++ -emit-llvm x.cpp -o program.bc -c

konto usunięte

Temat: Dlaczego LVM nie działa?

Przede wszystkim LLVM, a nie LVM.
W zależności od wersji LLVM-a musisz przekompilować dragonegg samodzielnie w odpowiedniej wersji (tzn. najpierw go ściągnąć, przy czym na stronie LLVM-a są różne wersje dragonegg-a), ponieważ może masz zachodzi sytuacja, że masz zainstalowaną w systemie jakąś wersję, która może być niekompatybilna i trzeba ją najpierw odinstalować.
Ja przynajmniej tak zrobiłem i pomogło.

Pozdrawiam i życzę powodzenia.

konto usunięte

Temat: Dlaczego LVM nie działa?

dokładnie, u mnie:

export dragonegg_disable_version_check=yes


pomogło.

mam natomiast inny problem, mianowicie:


:~/test2$ llvm-as -f t.ll
llvm-as: t.ll:1:1: error: expected top-level entity


Natomiast dla przykładu ze strony:

http://www.antlr.org/wiki/display/ANTLR3/LLVM

Otrzymuję następujący rezultat:


:~/test2$ llvm-as -f t.ll
llvm-as: t.ll:5:1: error: expected top-level entity
 
^
Michał Dudziak edytował(a) ten post dnia 04.06.12 o godzinie 20:58

Temat: Dlaczego LVM nie działa?

To samo. Chciałem przekonwertować z C++ na C według http://stackoverflow.com/questions/1833484/c-frontend-...

llvm-g++ -emit-llvm -c foo.cpp -o foo.o
llc -march=c <foo.o >foo.c

Pierwsze polecenie zadziałało, dla drugiego expected top-level entity

konto usunięte

Temat: Dlaczego LVM nie działa?

Mam kilka uwag, może się przydadzą - nie mam teraz LLVM pod ręką, ale na LLVM-Developers piszą, że:

"dragonegg doesn't support -emit-llvm; try -flto." - odnosi się to do gcc, natomiast w dokumentacji dragonegg:

"Adding -fplugin-arg-dragonegg-emit-ir or -flto causes LLVM IR to be output (you need to request assembler output, -S, rather than object code output, -c, since otherwise gcc will pass the LLVM IR to the system assembler, which will doubtless fail to assemble it)":

LTO - http://gcc.gnu.org/wiki/LinkTimeOptimization


Poza tym:


ELFP4(
^

oznacza plik binarny (ELF), tam gdzie llc oczekuje top-level-entity, czyli prawdopodobnie np. main(), ponieważ w argumentach jest -march=c program.bc, czyli program.bc powinien być IR-em zawierającym top-level-entity.


Czyli problem najprawdopodobniej wynika z połączenia:

g++ ... -emit-llvm ... -o program.bc

Który nie tworzy IR jako program.bc, a zwykły moduł .o o nazwie program.bc.

Pozdrawiam,
Tomasz Budzeń

Temat: Dlaczego LVM nie działa?

Dzięki,
lepiej gdy jest
llvm-g++ -fplugin-arg-dragonegg-emit-ir -S foo.cpp -o foo.s

to się kompiluje do assemblera

Pozdrawiam

Następna dyskusja:

W git nie działa .gitignore




Wyślij zaproszenie do