<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On Jun 26, 2007, at 11:20 AM, David A. Greene wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">28<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>%AL<dead> = MOV8rr %reg1024<kill>, %EAX<imp-def></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">MOV8rr<SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>%mreg(2)<d><SPAN class="Apple-tab-span" style="white-space:pre">   </SPAN>%reg1024<SPAN class="Apple-tab-span" style="white-space:pre">    </SPAN>%mreg(17)<d></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">32<SPAN class="Apple-tab-span" style="white-space:pre">    </SPAN>CALL64pcrel32 <ga:printf>, %RDI<kill>, %RAX<imp-def>, %RCX<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%RDX<imp-def,dead>, %RSI<imp-def,dead>, %RDI<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%R8<imp-def,dead>, %R9<imp-def,dead>, %R10<imp-def,dead>, %R11<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%FP0<imp-def,dead>, %FP1<imp-def,dead>, %FP2<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%FP3<imp-def,dead>, %FP4<imp-def,dead>, %FP5<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%FP6<imp-def,dead>, %ST(0)<imp-def,dead>, %MM0<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%MM1<imp-def,dead>, %MM2<imp-def,dead>, %MM3<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%MM4<imp-def,dead>, %MM5<imp-def,dead>, %MM6<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%MM7<imp-def,dead>, %XMM0<imp-def,dead>, %XMM1<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%XMM2<imp-def,dead>, %XMM3<imp-def,dead>, %XMM4<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%XMM5<imp-def,dead>, %XMM6<imp-def,dead>, %XMM7<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%XMM8<imp-def,dead>, %XMM9<imp-def,dead>, %XMM10<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%XMM11<imp-def,dead>, %XMM12<imp-def,dead>, %XMM13<imp-def,dead>,<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%XMM14<imp-def,dead>, %XMM15<imp-def,dead>, %EAX<imp-def></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">CALL64pcrel32<SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN><ga:printf><SPAN class="Apple-tab-span" style="white-space:pre">   </SPAN>%mreg(78)<SPAN class="Apple-tab-span" style="white-space:pre">   </SPAN>%mreg(74)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(77)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(79)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(81)<d><SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%mreg(78)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(66)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(70)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(42)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(46)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(26)<d><SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%mreg(27)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(28)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(29)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(30)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(31)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(32)<d><SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%mreg(87)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(34)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(35)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(36)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(37)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(38)<d><SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%mreg(39)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(40)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(41)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(95)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(96)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(103)<d><SPAN class="Apple-tab-span" style="white-space:pre">     </SPAN>%mreg(104)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(105)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(106)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(107)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(108)<d><SPAN class="Apple-tab-span" style="white-space:pre">     </SPAN>%mreg(109)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(110)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(97)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%mreg(98)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%mreg(99)<d><SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%mreg(100)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(101)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(102)<d><SPAN class="Apple-tab-span" style="white-space:pre"> </SPAN>%mreg(17)<d></DIV></BLOCKQUOTE><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Some selected live interval information:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">********** INTERVALS **********</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AH,inf = [30,42:0)[50,54:1)<SPAN class="Apple-converted-space">  </SPAN>0@? 1@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AL,inf = [30,31:0)[34,42:1)[50,54:2)<SPAN class="Apple-converted-space">  </SPAN>0@30 1@? 2@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AX,inf = [30,42:0)[50,54:1)<SPAN class="Apple-converted-space">  </SPAN>0@? 1@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">EAX,inf = [30,31:0)[34,42:1)[50,54:2)<SPAN class="Apple-converted-space">  </SPAN>0@30 1@? 2@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">RAX,inf = [34,50:0)[50,54:1)<SPAN class="Apple-converted-space">  </SPAN>0@? 1@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%reg1026,0 = [42,43:0)<SPAN class="Apple-converted-space">  </SPAN>0@42</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%reg1027,0 = [46,50:0)<SPAN class="Apple-converted-space">  </SPAN>0@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Here's where the non-understanding happens.<SPAN class="Apple-converted-space">  </SPAN>Why are the live ranges for the<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">A machine registers so different?<SPAN class="Apple-converted-space">  </SPAN>AL is defined in slot 30, which is an<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">implicit def of AX, EAX and RAX due to aliasing, right?<SPAN class="Apple-converted-space">  </SPAN>Only EAX is listed as<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">an explicit def in that instruction, though everything except RAX is show to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">have a live interval starting at slot 30.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>EAX and its sub-registers are defined by the MOV8rr instruction implicitly:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">28<SPAN class="Apple-tab-span" style="white-space:pre; color: rgb(0, 0, 221); ">  </SPAN>%AL<dead> = MOV8rr %reg1024<kill>, %EAX<imp-def></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">MOV8rr<SPAN class="Apple-tab-span" style="white-space:pre; color: rgb(0, 0, 221); ">       </SPAN>%mreg(2)<d><SPAN class="Apple-tab-span" style="white-space:pre; color: rgb(0, 0, 221); ">  </SPAN>%reg1024<SPAN class="Apple-tab-span" style="white-space:pre; color: rgb(0, 0, 221); ">   </SPAN>%mreg(17)<d></DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV>So their live ranges start at 28+2.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><BLOCKQUOTE type="cite">2<SPAN class="Apple-tab-span" style="white-space:pre; color: rgb(0, 0, 221); ">    </SPAN>CALL64pcrel32 <ga:printf>, %RDI<kill>, %RAX<imp-def>, %RCX<imp-def,dead>, </BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>RAX is implicitly defined by the CALL instruction. So it starts at 32+2.<BR><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">So two questions come up here: why isn't RAX included at the start of this</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">live interval and why is AH included in this interval -- it's not defined at<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">all!</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV>Sure it is. AH is a sub-register of EAX.</DIV><DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Then we get to the call to printf.<SPAN class="Apple-converted-space">  </SPAN>This defines EAX as a return value.<SPAN class="Apple-converted-space">  </SPAN>So<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">again we get another interval starting at slot 34.<SPAN class="Apple-converted-space">  </SPAN>This include AL, EAX</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">and RAX.<SPAN class="Apple-converted-space">  </SPAN>Why not AX and AH?<SPAN class="Apple-converted-space">  </SPAN>I suppose because they have intervals</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">that extend from slot 30 to slot 42.<SPAN class="Apple-converted-space">  </SPAN>That doesn't make any sense to me</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">at all.</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV>I see this:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">********** INTERVALS **********</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AH,inf = [30,42:0)[50,54:1)  0@? 1@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AL,inf = [30,31:0)[34,42:1)[50,54:2)  0@30 1@? 2@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AX,inf = [30,42:0)[50,54:1)  0@? 1@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">EAX,inf = [30,31:0)[34,42:1)[50,54:2)  0@30 1@? 2@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">RAX,inf = [34,50:0)[50,54:1)  0@? 1@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">AL is marked dead. So it makes sense there is a gap between [30:31) and [34,42).  It looks like EAX implicit def should be marked dead as well. So I think there is a bug there somewhere.</DIV><DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">At slot 42 all of the A registers EXCEPT RAX die (last use).<SPAN class="Apple-converted-space">  </SPAN>Again, what's<SPAN class="Apple-converted-space"> </SPAN></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the deal with RAX?<SPAN class="Apple-converted-space">  </SPAN>EAX is redefined just a few instructions later, which</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">should kill RAX.<SPAN class="Apple-converted-space">  </SPAN>The [34,50:0)[50,54:1)<SPAN class="Apple-converted-space">  </SPAN>interval for RAX is just weird.<SPAN class="Apple-converted-space">  </SPAN>Why</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">isn't it [34,54)?</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">48<SPAN class="Apple-tab-span" style="white-space:pre">      </SPAN>%EAX = MOV32rr %reg1027<kill>, %RAX<imp-use,kill>, %RAX<imp-def></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">MOV32rr<SPAN class="Apple-tab-span" style="white-space:pre">       </SPAN>%mreg(17)<d><SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%reg1027<SPAN class="Apple-tab-span" style="white-space:pre">    </SPAN>%mreg(74)<SPAN class="Apple-tab-span" style="white-space:pre">   </SPAN>%mreg(74)<d></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Def of sub-register use and define its super-register(s).  So RAX's live range isn't broken here.</DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Finally, according to the above live interval information, registers 1026 and</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">1027 have live ranges that overlap RAX.<SPAN class="Apple-converted-space">  </SPAN>That's just totally bogus as can</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">be seen simply by reading the machine instructions.<SPAN class="Apple-converted-space">  </SPAN>EAX and all other</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">A registers are last used at instruction 40 and EAX is not defined again</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">until instruction 48, which is the last use of register 1027.<SPAN class="Apple-converted-space">  </SPAN>The move to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">register 1026 is entirely unnecessary -- why is it even there?</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV>Move to r1026 is marked dead. This is the artifact of translating CopyFromReg (of the call result) of EAX. It's harmless.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">EAX,inf = [30,31:0)[34,42:1)[50,54:2)  0@30 1@? 2@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">RAX,inf = [34,50:0)[50,54:1)  0@? 1@50</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%reg1026,0 = [42,43:0)  0@42</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">%reg1027,0 = [46,50:0)  0@?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">40<SPAN class="Apple-tab-span" style="white-space:pre">       </SPAN>%reg1026<dead> = MOV32rr %EAX<kill></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">MOV32rr<SPAN class="Apple-tab-span" style="white-space:pre">  </SPAN>%reg1026<d><SPAN class="Apple-tab-span" style="white-space:pre">   </SPAN>%mreg(17)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">While EAX is marked kill here, RAX is still alive. Again, this is because def of EAX r/m/w RAX. It does not terminate RAX live range. The important thing here is reg1027 does not overlap EAX and the magic of coalescer join them together.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Evan</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><BR class="khtml-block-placeholder"></DIV><DIV><BR><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">It's apparent that I don't understand the interaction between live intervals</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">and register aliases/sub registers, etc.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Help?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-converted-space">                                                   </SPAN>-Dave</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">LLVM Developers mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</A> <SPAN class="Apple-converted-space">        </SPAN><A href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</A></DIV> </BLOCKQUOTE></DIV><BR></BODY></HTML>