<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
Hi,<br><br>I get strange code when using regalloc=greedy. <br><br>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:<br><br>    %vreg301<def> = mv32Imm 200000000, pred:0, pred:%noreg, %CCReg<imp-def,dead>, %ac0<imp-use>, %ac1<imp-use>; aN32_0_7:%vreg301<br>    Store32FI %vreg301, <fi#93>, pred:0, pred:%noreg, %CCReg<imp-def>; mem:ST4[FixedStack93] aN32_0_7:%vreg301<br>    KILL %vreg301, <fi#93>, 0, %noreg, %CCReg<imp-def>; mem:ST4[FixedStack93] aN32_0_7:%vreg301<br>    %a0_32<def> = COPY %vreg301; aN32_0_7:%vreg301<br><br>This results in abort:<br><br> "Assertion `MI->allDefsAreDead() && "Def isn't really dead"' failed."<br><br>What is the purpose of having the KILL opcode there, and do you know what might be the cause for this error?<br><br>Are all the register allocators currently of high standard, or are one or more less mature, meaning things might break?<br><br>/Jonas<br><br><br>                                          </div></body>
</html>