1 //===- BreakCriticalEdges.h - Critical Edge Elimination Pass --------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // BreakCriticalEdges pass - Break all of the critical edges in the CFG by 11 // inserting a dummy basic block. This pass may be "required" by passes that 12 // cannot deal with critical edges. For this usage, the structure type is 13 // forward declared. This pass obviously invalidates the CFG, but can update 14 // dominator trees. 15 // 16 //===----------------------------------------------------------------------===// 17 18 #ifndef LLVM_TRANSFORMS_UTILS_BREAKCRITICALEDGES_H 19 #define LLVM_TRANSFORMS_UTILS_BREAKCRITICALEDGES_H 20 21 #include "llvm/IR/Function.h" 22 #include "llvm/IR/PassManager.h" 23 24 namespace llvm { 25 struct BreakCriticalEdgesPass : public PassInfoMixin<BreakCriticalEdgesPass> { 26 PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); 27 }; 28 } // namespace llvm 29 #endif // LLVM_TRANSFORMS_UTILS_BREAKCRITICALEDGES_H 30