#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Transforms/Scalar/FlattenCFG.h"
#include "llvm/Transforms/Utils/Local.h"
usingnamespacellvm;
#define DEBUG_TYPE …
namespace {
struct FlattenCFGLegacyPass : public FunctionPass { … };
bool iterativelyFlattenCFG(Function &F, AliasAnalysis *AA) { … }
}
char FlattenCFGLegacyPass::ID = …;
INITIALIZE_PASS_BEGIN(FlattenCFGLegacyPass, "flattencfg", "Flatten the CFG",
false, false)
INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
INITIALIZE_PASS_END(FlattenCFGLegacyPass, "flattencfg", "Flatten the CFG",
false, false)
FunctionPass *llvm::createFlattenCFGPass() { … }
bool FlattenCFGLegacyPass::runOnFunction(Function &F) { … }
PreservedAnalyses FlattenCFGPass::run(Function &F,
FunctionAnalysisManager &AM) { … }