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>