The attached bitcode files are from the Geryon-PIC-O0-g__llvm-gcc_PROD__x86_64 nightly tester running on trunk. The crash llc with an Assertion failed: (MI->getOperand(0).isReg() && MI->getOperand(3).isImm()), function getDebugValueLocation, file lib/Target/X86/AsmPrinter/X86MCInstLower.cpp, line 520 llc -asm-verbose=false -O0 -relocation-model pic -disable-fp-elim Output/office-stringsearch.llvm.bc
Created attachment 5155 [details] failing bitcode
Note I have two more tests with the same assertion, 186.crafty.llvm.bc and 464.h264ref.llvm.bc. They are pretty big, so I won't attach. They both crash bugpoint, so I can't reduce them: UNREACHABLE executed at /d/g/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:904!
Devang/Dale, this is dying in: MachineLocation X86AsmPrinter::getDebugValueLocation(const MachineInstr *MI) const { MachineLocation Location; assert (MI->getNumOperands() == 7 && "Invalid no. of machine operands!"); // Frame address. Currently handles register +- offset only. assert(MI->getOperand(0).isReg() && MI->getOperand(3).isImm()); Location.set(MI->getOperand(0).getReg(), MI->getOperand(3).getImm()); return Location; } The DBG_VALUE is actually: (gdb) call MI->dump() DBG_VALUE %RIP, 1, %reg0, <ga:@C.9.2167>, %reg0, 0, !"find_strings"; dbg:pbmsrch.c:73 causing the crash. Please investigate, I assume the assert just needs to be loosened up or something.
Fixed the crash. r107678. File PR 7577 to track missing debug info.