<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'm working on live intervals and I'm curious about how LLVM typically would represent live info. Take the following case (after SimpleRegisterCoalescer):<br><br>BB#3: derived from LLVM BB %bb.nph<br>    Live Ins: %a0_h<br>    Predecessors according to CFG: BB#2<br>    %reg16500<def> = COPY %reg16499<br>    Successors according to CFG: BB#4<br><br>BB#4: derived from LLVM BB %for.body21<br>    Live Ins: %a0_h<br>    Predecessors according to CFG: BB#3 BB#4<br>    %reg16500<def> = add_twoAddr %reg16500, 1<br><br>    cmp_branch <BB#4>, %reg16500, %a0_h<br>    Successors according to CFG: BB#4 BB#5<br><br>BB#4 is a loop.<br><br>%reg16500 is first defined by a COPY, then updated at each iteration and used at the end as well of BB#4. <br><br>Live ins(BB#4) should include %reg16500 (Simple register coalescer did not care for this)<br>LiveRanges should be from the def in BB#3 to end of BB#3, from start of BB#4 to the add MI, from the add MI to the compare&branch MI.<br><br>Am I correct?<br>
<br>I am trying to recompute live-info after the coalescer, so I also wonder if any or both of the add and cmp_branch MI's should have kill-flags for %reg16500?<br><br>Thanks,<br><br>Jonas<br><br><br>                                          </div></body>
</html>