<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Hi,<br><br>I am combining 16-bit registers to a 32 bit register in order to make a wide store, as per below:<br><br>732 %reg16506:hi16<def,dead> = COPY %reg16445<kill>; <br>740 %reg16506:lo16<def> = COPY %reg16468<kill>;<br>748 %r3<def,dead> = store %reg16506<kill>, %r3, <br><br>As you can see, LiveVariables has marked the high part dead, even though the super-register is used at SlotIndex 748. Why is this? Should I add anything special to the basic BuildMI calls?<br><br>The LiveIntervalsAnalysis, then adds ranges to 16506 for the whole block - even prior to 732 which is the first subreg-def. This is a loop body, but 16506 is marked as killed at 748, so I don't see why there is a live range from earlier than 732. The coalescer will then report "Interference", and not coalesce the COPY to the subreg due to overlapping live intervals. <br><br>Any good tips and explanation would be appreciated,<br><br>Jonas<br><br>                                       </body>
</html>