[LLVMdev] llvm interpreter cannot execute llvm-gcc generated bitcode

Nick Lewycky nicholas at mxc.ca
Thu Jan 28 10:04:40 PST 2010


Kristaps Straupe wrote:
> Hi!
>
> We are compiling a very large C project in llvm and trying to execute
> it in interpreter. There is a problem with executing the generated
> bitcode.

The interpreter is under-maintained in general, but this bug in 
particular is fixed SVN as-of r86428. Are you on a platform that isn't 
supported by llvm's jit?

Nick

> We are using lli.exe and llvm-gcc.exe from official 2.6 LLVM release.
>
> We have localized the problem to following c code:
> --------------------
> int f(unsigned char x) __attribute__((noinline));
>
> int f(unsigned char x)
> {
>    return x - 1;
> }
>
> int main()
> {
>     return f(1);
> }
> --------------------
>
>
> Which generates following llvm assembly:
> ----------
> ; ModuleID = 'a.o'
> target datalayout =
> "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
> target triple = "i386-mingw32"
>
> define i32 @f(i8 zeroext %x) nounwind readnone noinline {
> entry:
>    %0 = zext i8 %x to i32                          ;<i32>  [#uses=1]
>    %1 = add i32 %0, -1                             ;<i32>  [#uses=1]
>    ret i32 %1
> }
>
> define i32 @main() nounwind readnone {
> entry:
>    %0 = tail call i32 @f(i8 zeroext 1) nounwind    ;<i32>  [#uses=1]
>    ret i32 %0
> }
> -----------
>
>
> Finally calling it with:
> ----------
> llvm-gcc -c -emit-llvm -O2 a.c
> lli -force-interpreter a.o
> ----------
>
> Yields us:
> -----------
> "Assertion failed: width>  BitWidth&&  "Invalid APInt ZeroExtend
> request", file c:/proj/llvm/src/lib/Support/APInt.cpp, line 1064"
> -----------
> where both width and BitWidth have value "32".
>
>
> Removing this assert in llvm source makes more similar (APInt related)
> asserts fail later.
>
> Is that a problem with llvm-gcc or is there a fix in llvm source available?
>
>
> Thank you and we hope to hear from you soon.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list