[LLVMdev] -emit-llvm on ubuntu is broken

Duncan Sands
Tue, 22 Mar 2011 08:30:05 -0000

Hi Eric,

> Looks like something wonky with DragonEgg.

you need to use -fplugin-arg-dragonegg-emit-ir or -flto with dragonegg,
not -emit-llvm.  Also, you currently have to use -S (getting human readable
IR) rather than -c because with -c gcc will run cc1 with -S (getting human
readable IR) then pass the result to the system assembler which of course
barfs.  This is documented on the web-page and in the README.

Ciao, Duncan.

>
> Duncan?
>
> -eric
>
> On Mar 21, 2011, at 7:05 PM, stackunderflow wrote:
>
>>
>> Hi Eric,
>>
>> here is my -emit-llvm -S -v output:
>>
>> Using built-in specs.
>> COLLECT_GCC=gcc-4.5
>> COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.5.1/lto-wrapper
>> Target: i686-linux-gnu
>> Configured with: ../src/configure -v
--with-pkgversion='Ubuntu/Linaro
>> 4.5.1-7ubuntu2'
--with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs
>> --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
>> --program-suffix=-4.5 --enable-shared --enable-multiarch
>> --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib
>> --without-included-gettext --enable-threads=posix
>> --with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib
--enable-nls
>> --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
>> --enable-libstdcxx-time=yes --enable-plugin --enable-gold
>> --with-plugin-ld=ld.gold --enable-objc-gc --enable-targets=all
>> --disable-werror --with-arch-32=i686 --with-tune=generic
>> --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu
>> --target=i686-linux-gnu
>> Thread model: posix
>> gcc version 4.5.1 (Ubuntu/Linaro 4.5.1-7ubuntu2)
>>
COLLECT_GCC_OPTIONS='-fplugin=/usr/lib/gcc/i686-linux-gnu/4.5/plugin/dragonegg.so'
>> '-emit-llvm' '-S' '-v' '-mtune=generic'
'-march=i686'
>> /usr/lib/gcc/i686-linux-gnu/4.5.1/cc1 -quiet -v
>> -iplugindir=/usr/lib/gcc/i686-linux-gnu/4.5.1/plugin hello.c
>> -D_FORTIFY_SOURCE=2
-iplugindir=/usr/lib/gcc/i686-linux-gnu/4.5.1/plugin
>> -quiet -dumpbase hello.c -mtune=generic -march=i686 -auxbase hello
-version
>> -fplugin=/usr/lib/gcc/i686-linux-gnu/4.5/plugin/dragonegg.so -o hello.s
>> -fstack-protector
>> GNU C (Ubuntu/Linaro 4.5.1-7ubuntu2) version 4.5.1 (i686-linux-gnu)
>> 	compiled by GNU C version 4.5.1, GMP version 4.3.2, MPFR version
3.0.0-p3,
>> MPC version 0.8.2
>> GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
>> Versions of loaded plugins:
>> dragonegg:
>> ignoring nonexistent directory
"/usr/local/include/i686-linux-gnu"
>> ignoring nonexistent directory
>>
"/usr/lib/gcc/i686-linux-gnu/4.5.1/../../../../i686-linux-gnu/include"
>> #include "..." search starts here:
>> #include<...>  search starts here:
>> /usr/local/include
>> /usr/lib/gcc/i686-linux-gnu/4.5.1/include
>> /usr/lib/gcc/i686-linux-gnu/4.5.1/include-fixed
>> /usr/include/i686-linux-gnu
>> /usr/include
>> End of search list.
>> GNU C (Ubuntu/Linaro 4.5.1-7ubuntu2) version 4.5.1 (i686-linux-gnu)
>> 	compiled by GNU C version 4.5.1, GMP version 4.3.2, MPFR version
3.0.0-p3,
>> MPC version 0.8.2
>> GGC heuristics: --param ggc-min-expand=100 --param
ggc-min-heapsize=131072
>> Versions of loaded plugins:
>> dragonegg:
>> Compiler executable checksum: ee807c30bb3adc8f3aa917a64443d0ec
>>
COMPILER_PATH=/usr/lib/gcc/i686-linux-gnu/4.5.1/:/usr/lib/gcc/i686-linux-gnu/4.5.1/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.5.1/:/usr/lib/gcc/i686-linux-gnu/
>>
LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/4.5.1/:/usr/lib/gcc/i686-linux-gnu/4.5.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.5.1/../../../:/lib/:/usr/lib/:/usr/lib/i686-linux-gnu/
>>
COLLECT_GCC_OPTIONS='-fplugin=/usr/lib/gcc/i686-linux-gnu/4.5/plugin/dragonegg.so'
>> '-emit-llvm' '-S' '-v' '-mtune=generic'
'-march=i686'
>>
>>
>>
>>
>>
>> Eric Christopher-2 wrote:
>>>
>>>
>>> On Mar 21, 2011, at 6:36 PM, stackunderflow wrote:
>>>
>>>>
>>>> I try to generate a human readable .ll file on Linux. I
installed
>>>> llvm-gcc
>>>> but as I see it can generate only assembly code (-S option). Is
there any
>>>> way to get something like what is generated by llvm online
compiler?
>>>>
>>>> That's what I get with llvm-gcc -S -emit-llvm hello.c on
Ubuntu 10.10:
>>>
>>> llvm-gcc -v ?
>>>
>>> -eric
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>
>>
>> --
>> View this message in context:
http://old.nabble.com/-emit-llvm-on-ubuntu-is-broken-tp31206382p31206493.html
>> Sent from the LLVM - Dev mailing list archive at Nabble.com.