[LLVMdev] Greedy regalloc

Chad Rosier mcrosier at apple.com
Fri Nov 18 11:34:52 PST 2011


Hi Jonas,
This is an unexpected failure.  I suggest filing a bug report at http://llvm.org/bugs.  When Clang crashed it should have provided a stack trace, preprocessed source, and a script to reproduce the error.  Please include these items in the bug report.

 Chad


On Nov 18, 2011, at 10:03 AM, Jonas Paulsson wrote:

> Hi,
> 
> I get strange code when using regalloc=greedy. 
> 
> A value spill is redundant and cleared, as another spill of same value is inserted. The former spill is however not NOP:ed, but KILL:ed, thus the operands get a kill status. The code becomes:
> 
>     %vreg301<def> = mv32Imm 200000000, pred:0, pred:%noreg, %CCReg<imp-def,dead>, %ac0<imp-use>, %ac1<imp-use>; aN32_0_7:%vreg301
>     Store32FI %vreg301, <fi#93>, pred:0, pred:%noreg, %CCReg<imp-def>; mem:ST4[FixedStack93] aN32_0_7:%vreg301
>     KILL %vreg301, <fi#93>, 0, %noreg, %CCReg<imp-def>; mem:ST4[FixedStack93] aN32_0_7:%vreg301
>     %a0_32<def> = COPY %vreg301; aN32_0_7:%vreg301
> 
> This results in abort:
> 
>  "Assertion `MI->allDefsAreDead() && "Def isn't really dead"' failed."
> 
> What is the purpose of having the KILL opcode there, and do you know what might be the cause for this error?
> 
> Are all the register allocators currently of high standard, or are one or more less mature, meaning things might break?
> 
> /Jonas
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111118/143a8690/attachment.html>


More information about the llvm-dev mailing list