Hi Allan,<div><br></div><div>Thanks for the fix! So is this a bug in LLVM? Can you reduce that to a small test case and file a bug?</div><div><br></div><div>Nicolas</div><div><br><div class="gmail_quote">2010/8/2 Allan Tong <span dir="ltr"><<a href="mailto:actong88@gmail.com">actong88@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">On Mon, Jul 19, 2010 at 7:40 PM, Minas Abrahamyan <<a href="mailto:minas.subs@gmail.com">minas.subs@gmail.com</a>> wrote:<br>

> Trying to build AOT version of vmkit java,<br>
> building for that classpath glibj.zip:<br>
><br>
> $ cd vmkit/tools/vmjc/libvmjc<br>
> $ make ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 REQUIRES_FRAME_POINTER=1<br>
><br>
> has eventually, after 50 minutes, brought:<br>
> <<<<br>
> llvm[0]: Compiling glibj.zip to llvm<br>
> llvm[0]: Optimizing glibj.zip<br>
> llvm[0]: Compiling glibj.zip.bc to native<br>
> UNREACHABLE executed!<br>
> 0  llc             0x0000000000c0e04f<br>
> 1  llc             0x0000000000c0fc4a<br>
> 2  libpthread.so.0 0x0000003b6400f0f0<br>
> 3  libc.so.6       0x0000003b634326c5 gsignal + 53<br>
> 4  libc.so.6       0x0000003b63433ea5 abort + 373<br>
> 5  llc             0x0000000000bf07e4<br>
> llvm::llvm_unreachable_internal(char const*, char const*, unsigned<br>
> int) + 356<br>
> 6  llc             0x00000000008f353d<br>
> 7  llc             0x00000000008f3614<br>
> 8  llc             0x00000000008f85e2<br>
> 9  llc             0x00000000008f894e<br>
> 10 llc             0x00000000008fa586<br>
> llvm::AsmPrinter::EmitGlobalVariable(llvm::GlobalVariable const*) +<br>
> 550<br>
> 11 llc             0x00000000008f412f<br>
> llvm::AsmPrinter::doFinalization(llvm::Module&) + 63<br>
> 12 llc             0x0000000000ba0369<br>
> llvm::FPPassManager::doFinalization(llvm::Module&) + 57<br>
> 13 llc             0x0000000000ba691f<br>
> llvm::FPPassManager::runOnModule(llvm::Module&) + 95<br>
> 14 llc             0x0000000000ba644e<br>
> llvm::MPPassManager::runOnModule(llvm::Module&) + 462<br>
> 15 llc             0x0000000000ba655d<br>
> llvm::PassManagerImpl::run(llvm::Module&) + 125<br>
> 16 llc             0x000000000051dca0 main + 2672<br>
> 17 libc.so.6       0x0000003b6341eb1d __libc_start_main + 253<br>
> 18 llc             0x000000000051bb19<br>
> Stack dump:<br>
> 0.      Program arguments:<br>
> /home/mn/tests/VMkit/llvm/Release-Asserts/bin/llc<br>
> -relocation-model=pic -disable-fp-elim glibj-optimized.zip.bc -o<br>
> glibj.zip.s<br>
> 1.      Running pass 'Function Pass Manager' on module 'glibj-optimized.zip.bc'.<br>
> make: *** [glibj.zip.s] Aborted (core dumped)<br>
>>>><br>
><br>
> File sizes: glibj.zip.bc (93Mb), glibj-optimized.zip.bc (93Mb),<br>
> glibj-optimized.zip.s  was ~>190Mb when this crush occurred.<br>
><br>
> How this can be corrected?<br>
<br>
</div></div>Attached patch should fix the issue.  The unreachable condition was<br>
caused by a constant expression involving an inttoptr from i32.  This<br>
results in a zext to 64 bits, but apparently LowerConstant in<br>
AsmPrinter doesn't handle constant expressions involving zext.  Aren't<br>
zext constant expressions supported by LLVM?<br>
<font color="#888888"><br>
 - Allan<br>
</font><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br></div>