<div>Perhaps what I think is a problem really is not a problem.</div><div><br></div><div>So when a jump occurs from one block A to block B, then the registers are certain state, and register allocation happens with the initial state defined by A->B. When a third block C jumps to block B, the state of the registers are different. Thus register allocation needs to account for the jump from C->B, by a few ways:</div>
<div><br></div><div>1. The allocator defines A->B as the conformity state. Thus when C->B, C must conform to the state of the register from A. </div><div>2. A branch may occur where B' = B in respect to the instructions, but register allocation from C->B' will be different because of differing initial states.</div>
<div><br></div><div>The information I need is where the jumps occurs in the instructions vector. </div><div><br></div><div>Thanks,<br>Jeff Kunkel</div><br><br><div class="gmail_quote">On Thu, Sep 2, 2010 at 8:05 PM, Dale Johannesen <span dir="ltr"><<a href="mailto:dalej@apple.com">dalej@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word">It is at the end allowing for oddities like debug info and multiple branches.  You might want to look at AnalyzeBranch.<div>
<br><div><div><div></div><div class="h5"><div>On Sep 2, 2010, at 4:19 PMPDT, Jeff Kunkel wrote:</div><br></div></div><blockquote type="cite"><div><div></div><div class="h5">Is there any way to tell where in the Instruction list, the branch to the other MachineBasicBlock happens? I know in the BasicBlock had a nice api for it.<div>
<br></div><div>Thanks,</div><div>Jeff Kunkel<br><br><div class="gmail_quote"> On Thu, Sep 2, 2010 at 5:56 PM, Dale Johannesen <span dir="ltr"><<a href="mailto:dalej@apple.com" target="_blank">dalej@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div><br> On Sep 2, 2010, at 2:44 PMPDT, Jeff Kunkel wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 I need to track which MachineBasicBlocks branch into other MachineBasicBlocks. How do I do it?<br> </blockquote> <br></div> Look at the Predecessor/Successor lists, which are target-independent<div><br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 I see a MachineOperand can hold a MachineBasicBlock*. Does this mean the instruction may branch to the MachineBasicBlock, or can it be something like an object reference?<br> </blockquote> <br></div> It can also be the dreaded gcc "address of label" extension.  Number and ordering of instruction operands is target-dependent.<br>
 <br> <br> </blockquote></div><br></div></div></div><div class="im"> _______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></div></blockquote></div><br></div></div></blockquote></div><br>