[llvm-dev] Error at Pre-regalloc Machine LICM: "getVRegDef assumes a single definition or no definition"' failed.

Alex Susu via llvm-dev llvm-dev at lists.llvm.org
Mon Feb 20 19:15:40 PST 2017


   Hello.
     Does anybody have an idea why I'm getting the error below when using llc with 
arguments -O1 -disable-cgp? Note that this error is not given when using llc -O0. (I'd 
like to mention also I'm using custom Instruction selection for BUILD_VECTOR, which gets 
converted in my back end's machine instrution VLOAD_D, although the custom code seems to 
always select instructions in a valid way.)

     ******** Pre-regalloc Machine LICM: Test ********
     Entering BB#4
     Hoist non-reg-pressure: %vreg50<def> = VLOAD_D 1; MSA128D:%vreg50 dbg:IfVectorize.c:37:16
     Hoisting %vreg50<def> = VLOAD_D 1; MSA128D:%vreg50 dbg:IfVectorize.c:37:16
      from BB#4 to BB#3
     Hoist non-reg-pressure: %vreg51<def> = VLOAD_D 0; MSA128D:%vreg51
     Hoisting %vreg51<def> = VLOAD_D 0; MSA128D:%vreg51
      from BB#4 to BB#3
     Can't remat / high reg-pressure: %vreg54<def> = COPY %vreg50; BoolMask:%vreg54 
MSA128D:%vreg50 dbg:IfVectorize.c:37:16
     Can't remat / high reg-pressure: %vreg57<def> = COPY %vreg50; BoolMask:%vreg57 
MSA128D:%vreg50 dbg:IfVectorize.c:37:16
     Entering BB#15
     Hoisting %vreg66<def> = LD_imm64 4294967296; GPR:%vreg66
      from BB#15 to BB#6
     Entering BB#12
     Hoist non-reg-pressure: %vreg83<def> = VLOAD_D 3; MSA128D:%vreg83 dbg:IfVectorize.c:42:13
     Hoisting %vreg83<def> = VLOAD_D 3; MSA128D:%vreg83 dbg:IfVectorize.c:42:13
      from BB#12 to BB#11
     Hoist non-reg-pressure: %vreg84<def> = ORV_D %vreg83, %vreg83; 
MSA128D:%vreg84,%vreg83,%vreg83 dbg:IfVectorize.c:42:18
     Hoisting %vreg84<def> = ORV_D %vreg83, %vreg83; MSA128D:%vreg84,%vreg83,%vreg83 
dbg:IfVectorize.c:42:18
      from BB#12 to BB#11
     Hoist non-reg-pressure: %vreg86<def> = VLOAD_D 1; MSA128D:%vreg86 dbg:IfVectorize.c:42:13
     Hoisting %vreg86<def> = VLOAD_D 1; MSA128D:%vreg86 dbg:IfVectorize.c:42:13
      from BB#12 to BB#11
     Hoist non-reg-pressure: %vreg87<def> = VLOAD_D 0; MSA128D:%vreg87 dbg:IfVectorize.c:42:18
     Hoisting %vreg87<def> = VLOAD_D 0; MSA128D:%vreg87 dbg:IfVectorize.c:42:18
      from BB#12 to BB#11
     Hoist non-reg-pressure: %vreg85<def> = VLOAD_D 101; MSA128D:%vreg85 
dbg:IfVectorize.c:42:13
     Hoisting %vreg85<def> = VLOAD_D 101; MSA128D:%vreg85 dbg:IfVectorize.c:42:13
      from BB#12 to BB#11
     Hoist non-reg-pressure: %vreg84<def> = ORV_D %vreg85, %vreg85; 
MSA128D:%vreg84,%vreg85,%vreg85 dbg:IfVectorize.c:42:18
     Hoisting %vreg84<def> = ORV_D %vreg85, %vreg85; MSA128D:%vreg84,%vreg85,%vreg85 
dbg:IfVectorize.c:42:18
      from BB#12 to BB#11
     Can't remat / high reg-pressure: %vreg94<def> = COPY %vreg86; BoolMask:%vreg94 
MSA128D:%vreg86 dbg:IfVectorize.c:42:13

     llc: /llvm/lib/CodeGen/MachineRegisterInfo.cpp:339: llvm::MachineInstr* 
llvm::MachineRegisterInfo::getVRegDef(unsigned int) const: Assertion `(I.atEnd() || 
std::next(I) == def_instr_end()) && "getVRegDef assumes a single definition or no 
definition"' failed.

     0  libLLVMSupport.so 0x00007f634e255700 
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 72
     1  libLLVMSupport.so 0x00007f634e255a9a
     2  libLLVMSupport.so 0x00007f634e253b55 llvm::sys::RunSignalHandlers() + 133
     3  libLLVMSupport.so 0x00007f634e254f4b
     4  libc.so.6         0x00007f634d1054b0
     5  libc.so.6         0x00007f634d105428 gsignal + 56
     6  libc.so.6         0x00007f634d10702a abort + 362
     7  libc.so.6         0x00007f634d0fdbd7
     8  libc.so.6         0x00007f634d0fdc82
     9  libLLVMCodeGen.so 0x00007f6350b39ef2 
llvm::MachineRegisterInfo::getVRegDef(unsigned int) const + 182
     10 libLLVMCodeGen.so 0x00007f6350afd238
     11 libLLVMCodeGen.so 0x00007f6350aff75f
     12 libLLVMCodeGen.so 0x00007f6350afbef5
     13 libLLVMCodeGen.so 0x00007f6350afa279
     14 libLLVMCodeGen.so 0x00007f6350ae5d3a 
llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 426
     15 libLLVMCore.so    0x00007f635000f035 
llvm::FPPassManager::runOnFunction(llvm::Function&) + 305
     16 libLLVMCore.so    0x00007f635000f1ec 
llvm::FPPassManager::runOnModule(llvm::Module&) + 112
     17 libLLVMCore.so    0x00007f635000f5a9
     18 libLLVMCore.so    0x00007f635000fd13 
llvm::legacy::PassManagerImpl::run(llvm::Module&) + 259
     19 libLLVMCore.so    0x00007f635000ff53 llvm::legacy::PassManager::run(llvm::Module&) 
+ 39
     20 llc               0x000000000042f134
     21 llc               0x000000000042dacc main + 359
     22 libc.so.6         0x00007f634d0f0830 __libc_start_main + 240
     23 llc               0x000000000042be09 _start + 41
     Stack dump:
     0.      Program arguments: /llvm/build40/bin/llc -print-after-all -debug 
-march=connex -O1 -disable-cgp -post-RA-scheduler -enable-asm-printAlex -asm-show-inst 
-asm-verbose -debug-pass=Structure IfVectorize.ll
     1.      Running pass 'Function Pass Manager' on module 'IfVectorize.ll'.
     2.      Running pass 'Machine Loop Invariant Code Motion' on function '@Test'

   Thank you very much.
     Alex



More information about the llvm-dev mailing list