1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //=- llvm/CodeGen/MachineDominators.h ----------------------------*- C++ -*-==//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- //
- // This file exposes interfaces to post dominance information for
- // target-specific code.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CODEGEN_MACHINEPOSTDOMINATORS_H
- #define LLVM_CODEGEN_MACHINEPOSTDOMINATORS_H
- #include "llvm/CodeGen/MachineDominators.h"
- #include "llvm/CodeGen/MachineFunctionPass.h"
- namespace llvm {
- ///
- /// PostDominatorTree Class - Concrete subclass of DominatorTree that is used
- /// to compute the post-dominator tree.
- ///
- struct MachinePostDominatorTree : public MachineFunctionPass {
- private:
- DominatorTreeBase<MachineBasicBlock> *DT;
- public:
- static char ID;
- MachinePostDominatorTree();
- ~MachinePostDominatorTree() override;
- FunctionPass *createMachinePostDominatorTreePass();
- const std::vector<MachineBasicBlock *> &getRoots() const {
- return DT->getRoots();
- }
- MachineDomTreeNode *getRootNode() const {
- return DT->getRootNode();
- }
- MachineDomTreeNode *operator[](MachineBasicBlock *BB) const {
- return DT->getNode(BB);
- }
- MachineDomTreeNode *getNode(MachineBasicBlock *BB) const {
- return DT->getNode(BB);
- }
- bool dominates(const MachineDomTreeNode *A,
- const MachineDomTreeNode *B) const {
- return DT->dominates(A, B);
- }
- bool dominates(const MachineBasicBlock *A, const MachineBasicBlock *B) const {
- return DT->dominates(A, B);
- }
- bool properlyDominates(const MachineDomTreeNode *A,
- const MachineDomTreeNode *B) const {
- return DT->properlyDominates(A, B);
- }
- bool properlyDominates(const MachineBasicBlock *A,
- const MachineBasicBlock *B) const {
- return DT->properlyDominates(A, B);
- }
- MachineBasicBlock *findNearestCommonDominator(MachineBasicBlock *A,
- MachineBasicBlock *B) {
- return DT->findNearestCommonDominator(A, B);
- }
- bool runOnMachineFunction(MachineFunction &MF) override;
- void getAnalysisUsage(AnalysisUsage &AU) const override;
- void print(llvm::raw_ostream &OS, const Module *M = nullptr) const override;
- };
- } //end of namespace llvm
- #endif
|