[LLVMdev] CFG modifcations and code gen
Dale Johannesen
dalej at apple.com
Mon Oct 13 17:27:47 PDT 2008
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
>
> _______________________________________________
> 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/46cbe475/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mftest_fc_for_break_or.dot
Type: application/octet-stream
Size: 2455 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081013/46cbe475/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081013/46cbe475/attachment-0001.html>
More information about the llvm-dev
mailing list