Hello,
I am working on a project that requires me to perform some analysis on a bitcode file outside the existing LLVM analysis frameworks (opt, etc.). In what I am doing, I need to be able to access the dominator tree for a given function. Is there a way I can instantiate a DominatorTree object outside the existing analysis frameworks?
I have tried several things all along the lines of:
DominatorTree DT;
DT.getBase().recalculate(F);
Everything I have tried results in an assertion failure when trying to access the front() of what I assume is the DominatorTree:
Assertion failed: !empty() && "Called front() on empty list!"
If anyone has an example of how to do this, I would really appreciate it.
Thanks,
David
Hello,
I am working on a project that requires me to perform some analysis on a bitcode file outside the existing LLVM analysis frameworks (opt, etc.). In what I am doing, I need to be able to access the dominator tree for a given function. Is there a way I can instantiate a DominatorTree object outside the existing analysis frameworks?
I have tried several things all along the lines of:
DominatorTree DT;
DT.getBase().recalculate(F);
Everything I have tried results in an assertion failure when trying to access the front() of what I assume is the DominatorTree:
Assertion failed: !empty() && "Called front() on empty list!"
If anyone has an example of how to do this, I would really appreciate it.
Thanks,
David
_______________________________________________ LLVM Developers mailing list LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
John,
Thanks for the quick reply. Using a PassManager object should work fine. As you said, my only objection is to exec'ing opt.
I had actually tried instantiating a PassManager object before, but I was definitely not doing it right. I will take a look at how clang and SAFECode use it, and see if I can get it working.
Thanks,
David
John,
Thanks for the quick reply. Using a PassManager object should work fine. As you said, my only objection is to exec'ing opt.
I had actually tried instantiating a PassManager object before, but I was definitely not doing it right. I will take a look at how clang and SAFECode use it, and see if I can get it working.
John,
I was able to get access to the dominator tree by doing exactly as you said. I instantiate a PassManager object, make my code inherit from Pass, and add it to the PassManager. Then I overload runOnFunction, etc just like when writing a pass for opt.
All of that seems to be working great.
Thanks for your help,