LLVM  4.0.0
SimplifyCFG.h
Go to the documentation of this file.
1 //===- SimplifyCFG.h - Simplify and canonicalize the CFG --------*- C++ -*-===//
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 /// \file
10 /// This file provides the interface for the pass responsible for both
11 /// simplifying and canonicalizing the CFG.
12 ///
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_TRANSFORMS_SCALAR_SIMPLIFYCFG_H
16 #define LLVM_TRANSFORMS_SCALAR_SIMPLIFYCFG_H
17 
18 #include "llvm/IR/Function.h"
19 #include "llvm/IR/PassManager.h"
20 
21 namespace llvm {
22 
23 /// \brief A pass to simplify and canonicalize the CFG of a function.
24 ///
25 /// This pass iteratively simplifies the entire CFG of a function, removing
26 /// unnecessary control flows and bringing it into the canonical form expected
27 /// by the rest of the mid-level optimizer.
28 class SimplifyCFGPass : public PassInfoMixin<SimplifyCFGPass> {
29  int BonusInstThreshold;
30 
31 public:
32  /// \brief Construct a pass with the default thresholds.
34 
35  /// \brief Construct a pass with a specific bonus threshold.
36  SimplifyCFGPass(int BonusInstThreshold);
37 
38  /// \brief Run the pass over the function.
40 };
41 
42 }
43 
44 #endif
#define F(x, y, z)
Definition: MD5.cpp:51
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:311
A set of analyses that are preserved following a run of a transformation pass.
Definition: PassManager.h:107
A pass to simplify and canonicalize the CFG of a function.
Definition: SimplifyCFG.h:28
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
Run the pass over the function.
SimplifyCFGPass()
Construct a pass with the default thresholds.
A container for analyses that lazily runs them and caches their results.
This header defines various interfaces for pass management in LLVM.