[LLVMdev] VMkit AOT build problem: llc crushed on glibj compilation to native(.s) file

Allan Tong actong88 at gmail.com
Sun Aug 1 23:10:20 PDT 2010


On Mon, Jul 19, 2010 at 7:40 PM, Minas Abrahamyan <minas.subs at gmail.com> wrote:
> Trying to build AOT version of vmkit java,
> building for that classpath glibj.zip:
>
> $ cd vmkit/tools/vmjc/libvmjc
> $ make ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 REQUIRES_FRAME_POINTER=1
>
> has eventually, after 50 minutes, brought:
> <<<
> llvm[0]: Compiling glibj.zip to llvm
> llvm[0]: Optimizing glibj.zip
> llvm[0]: Compiling glibj.zip.bc to native
> UNREACHABLE executed!
> 0  llc             0x0000000000c0e04f
> 1  llc             0x0000000000c0fc4a
> 2  libpthread.so.0 0x0000003b6400f0f0
> 3  libc.so.6       0x0000003b634326c5 gsignal + 53
> 4  libc.so.6       0x0000003b63433ea5 abort + 373
> 5  llc             0x0000000000bf07e4
> llvm::llvm_unreachable_internal(char const*, char const*, unsigned
> int) + 356
> 6  llc             0x00000000008f353d
> 7  llc             0x00000000008f3614
> 8  llc             0x00000000008f85e2
> 9  llc             0x00000000008f894e
> 10 llc             0x00000000008fa586
> llvm::AsmPrinter::EmitGlobalVariable(llvm::GlobalVariable const*) +
> 550
> 11 llc             0x00000000008f412f
> llvm::AsmPrinter::doFinalization(llvm::Module&) + 63
> 12 llc             0x0000000000ba0369
> llvm::FPPassManager::doFinalization(llvm::Module&) + 57
> 13 llc             0x0000000000ba691f
> llvm::FPPassManager::runOnModule(llvm::Module&) + 95
> 14 llc             0x0000000000ba644e
> llvm::MPPassManager::runOnModule(llvm::Module&) + 462
> 15 llc             0x0000000000ba655d
> llvm::PassManagerImpl::run(llvm::Module&) + 125
> 16 llc             0x000000000051dca0 main + 2672
> 17 libc.so.6       0x0000003b6341eb1d __libc_start_main + 253
> 18 llc             0x000000000051bb19
> Stack dump:
> 0.      Program arguments:
> /home/mn/tests/VMkit/llvm/Release-Asserts/bin/llc
> -relocation-model=pic -disable-fp-elim glibj-optimized.zip.bc -o
> glibj.zip.s
> 1.      Running pass 'Function Pass Manager' on module 'glibj-optimized.zip.bc'.
> make: *** [glibj.zip.s] Aborted (core dumped)
>>>>
>
> File sizes: glibj.zip.bc (93Mb), glibj-optimized.zip.bc (93Mb),
> glibj-optimized.zip.s  was ~>190Mb when this crush occurred.
>
> How this can be corrected?

Attached patch should fix the issue.  The unreachable condition was
caused by a constant expression involving an inttoptr from i32.  This
results in a zext to 64 bits, but apparently LowerConstant in
AsmPrinter doesn't handle constant expressions involving zext.  Aren't
zext constant expressions supported by LLVM?

 - Allan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libvmjc.diff
Type: text/x-patch
Size: 909 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100802/503b0ad2/attachment.bin>


More information about the llvm-dev mailing list