[LLVMdev] CFG modifcations and code gen

Daniel M Gessel gessel at apple.com
Mon Oct 13 18:43:42 PDT 2008


You don't have to run the branch folding pass, do you?

Dan

On Oct 13, 2008, at 8:27 PM, Dale Johannesen wrote:

>
> On Oct 13, 2008, at 5:14 PMPDT, Villmow, Micah wrote:
>
>> As stated in an earlier email, I am working on getting break/ 
>> continue to work correctly for my backend, but I ran into another  
>> issue with codegen and the CFG. It seems that code gen is not done  
>> based on the CFG, but rather on the block numbers, and the function  
>> call MachineFunction::RenumberBlocks doesn’t renumber the blocks  
>> based on the CFG. So how can I modify the CFG so that when codegen  
>> occurs, it follows the graph and not just does a linear scan over  
>> the MachineBasicBlock vector?
>
> It's not intended to work that way.  The BranchFolding pass, which  
> runs later, is responsible for rearranging things into a more  
> reasonable order.
>
>> In the attached dot file, block 2 gets printed before block 3 and 5  
>> and block 4 gets printed between blocks 3 and 5. This obviously is  
>> not what the CFG is saying it should be done. The code I’m using to  
>> do this transformation, which takes 2 & 4 and places them after  
>> block 5 is:
>>     MachineBasicBlock* newExitPath = findLowestNumSuccBB(root);
>>                 pHigh->addSuccessor(newExitPath);
>>                 root->removeSuccessor(newExitPath);
>>                 root->CorrectExtraCFGEdges(*root->succ_begin(),  
>> NULL, false);
>>                 pHigh->CorrectExtraCFGEdges(*pHigh->succ_begin(),  
>> newExitPath, false);
>>                 newExitPath->moveAfter(pHigh);
>>                 root->getParent()->RenumberBlocks();
>>
>> So what am I doing wrong?
>>
>> Thanks,
>>
>>
>> Micah Villmow
>> Systems Engineer
>> Advanced Technology & Performance
>> Advanced Micro Devices Inc.
>> 4555 Great America Pkwy,
>> Santa Clara, CA. 95054
>> P: 408-572-6219
>> F: 408-572-6596
>>
> <mftest_fc_for_break_or.dot>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081013/cecfe3fa/attachment.html>


More information about the llvm-dev mailing list