File indexing completed on 2026-05-10 08:43:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef LLVM_CODEGEN_MACHINEDOMTREEUPDATER_H
0015 #define LLVM_CODEGEN_MACHINEDOMTREEUPDATER_H
0016
0017 #include "llvm/Analysis/GenericDomTreeUpdater.h"
0018 #include "llvm/CodeGen/MachineDominators.h"
0019
0020 namespace llvm {
0021
0022 class MachinePostDominatorTree;
0023
0024 class MachineDomTreeUpdater
0025 : public GenericDomTreeUpdater<MachineDomTreeUpdater, MachineDominatorTree,
0026 MachinePostDominatorTree> {
0027 friend GenericDomTreeUpdater<MachineDomTreeUpdater, MachineDominatorTree,
0028 MachinePostDominatorTree>;
0029
0030 public:
0031 using Base =
0032 GenericDomTreeUpdater<MachineDomTreeUpdater, MachineDominatorTree,
0033 MachinePostDominatorTree>;
0034 using Base::Base;
0035
0036 ~MachineDomTreeUpdater() { flush(); }
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 void deleteBB(MachineBasicBlock *DelBB);
0050
0051
0052
0053 private:
0054
0055
0056
0057
0058
0059 void validateDeleteBB(MachineBasicBlock *DelBB);
0060
0061
0062 bool forceFlushDeletedBB();
0063 };
0064
0065 extern template class GenericDomTreeUpdater<
0066 MachineDomTreeUpdater, MachineDominatorTree, MachinePostDominatorTree>;
0067
0068 extern template void
0069 GenericDomTreeUpdater<MachineDomTreeUpdater, MachineDominatorTree,
0070 MachinePostDominatorTree>::recalculate(MachineFunction
0071 &MF);
0072
0073 extern template void GenericDomTreeUpdater<
0074 MachineDomTreeUpdater, MachineDominatorTree,
0075 MachinePostDominatorTree>::applyUpdatesImpl<true>();
0076 extern template void GenericDomTreeUpdater<
0077 MachineDomTreeUpdater, MachineDominatorTree,
0078 MachinePostDominatorTree>::applyUpdatesImpl<false>();
0079 }
0080 #endif