[LLVMdev] Compile C files to one .bc file

Rafael Avila de Espindola rafael.espindola at gmail.com
Wed Mar 2 07:57:16 PST 2011


On 11-03-02 10:44 AM, Vincent De Bruyne wrote:
> Hi
>
> I'm trying to compile the "bh" C program from the Olden benchmark to one
> bc file.
>
> # compile source files into an LLVM bitcode file
> llvm-gcc -emit-llvm -c args.c -o args.bc -w -DTORONTO
> llvm-gcc -emit-llvm -c newbh.c -o newbh.bc -w -DTORONTO
> llvm-gcc -emit-llvm -c util.c -o util.bc -w -DTORONTO
> llvm-gcc -emit-llvm -c walksub.c -o walksub.bc -w -DTORONTO
>
> # To link files together using llvm-ld
> llvm-ld -o bh.bc newbh.bc args.bc util.bc walksub.bc -lm

Check what is in bh.bc. If I remember correctly llvm-ld used to create a 
shell script that would run lli on the actual IL file.

> But when I try to run my pass over bh.bc file or just compile it to
> native code
> llc bh.bc -o bh.s
>
> I get the following error.
> llc: bh.bc:1:1:*error: expected top-level entity*
>
> Do you need to do some special stuff when you want to compile a C
> program with different files to one bc file.

For large programs you will probably a system linker that supports llvm 
(the apple one) or plugin (gold and very recent versions of gnu ld).

For small programs using llvm-link or llvm-ld should be ok.

> Thx,
> Vincent
>

Cheers,
Rafael



More information about the llvm-dev mailing list