1 //===- BreakCriticalEdges.h - Critical Edge Elimination Pass --------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // BreakCriticalEdges pass - Break all of the critical edges in the CFG by 10 // inserting a dummy basic block. This pass may be "required" by passes that 11 // cannot deal with critical edges. For this usage, the structure type is 12 // forward declared. This pass obviously invalidates the CFG, but can update 13 // dominator trees. 14 // 15 //===----------------------------------------------------------------------===// 16 17 #ifndef LLVM_TRANSFORMS_UTILS_BREAKCRITICALEDGES_H 18 #define LLVM_TRANSFORMS_UTILS_BREAKCRITICALEDGES_H 19 20 #include "llvm/IR/PassManager.h" 21 22 namespace llvm { 23 24 class Function; 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