forked from OSchip/llvm-project
Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h
Fixes layering - Transforms/Utils shouldn't depend on including a Scalar or IPO header, because Scalar and IPO depend on Utils. llvm-svn: 328717
This commit is contained in:
parent
d579c31d68
commit
a373d18eb7
|
@ -1,11 +1,12 @@
|
|||
#include "../include/KaleidoscopeJIT.h"
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/IR/BasicBlock.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
|
@ -15,7 +16,7 @@
|
|||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Scalar/GVN.h"
|
||||
#include "../include/KaleidoscopeJIT.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cctype>
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
#include "llvm/Transforms/ObjCARC.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Scalar/GVN.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/SymbolRewriter.h"
|
||||
#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
|
||||
#include "llvm/Transforms/Vectorize.h"
|
||||
|
|
|
@ -210,11 +210,6 @@ ModulePass *createMergeFunctionsPass();
|
|||
///
|
||||
ModulePass *createPartialInliningPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// createMetaRenamerPass - Rename everything with metasyntatic names.
|
||||
//
|
||||
ModulePass *createMetaRenamerPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
/// createBarrierNoopPass - This pass is purely a module pass barrier in a pass
|
||||
/// manager.
|
||||
|
|
|
@ -221,20 +221,6 @@ Pass *createLoopIdiomPass();
|
|||
//
|
||||
Pass *createLoopVersioningLICMPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// PromoteMemoryToRegister - This pass is used to promote memory references to
|
||||
// be register references. A simple example of the transformation performed by
|
||||
// this pass is:
|
||||
//
|
||||
// FROM CODE TO CODE
|
||||
// %X = alloca i32, i32 1 ret i32 42
|
||||
// store i32 42, i32 *%X
|
||||
// %Y = load i32* %X
|
||||
// ret i32 %Y
|
||||
//
|
||||
FunctionPass *createPromoteMemoryToRegisterPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// DemoteRegisterToMemoryPass - This pass is used to demote registers to memory
|
||||
|
@ -287,31 +273,6 @@ FunctionPass *createFlattenCFGPass();
|
|||
/// regions that only contain uniform branches.
|
||||
Pass *createStructurizeCFGPass(bool SkipUniformRegions = false);
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// BreakCriticalEdges - Break all of the critical edges in the CFG by inserting
|
||||
// a dummy basic block. This pass may be "required" by passes that cannot deal
|
||||
// with critical edges. For this usage, a pass must call:
|
||||
//
|
||||
// AU.addRequiredID(BreakCriticalEdgesID);
|
||||
//
|
||||
// This pass obviously invalidates the CFG, but can update forward dominator
|
||||
// (set, immediate dominators, tree, and frontier) information.
|
||||
//
|
||||
FunctionPass *createBreakCriticalEdgesPass();
|
||||
extern char &BreakCriticalEdgesID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopSimplify - Insert Pre-header blocks into the CFG for every function in
|
||||
// the module. This pass updates dominator information, loop information, and
|
||||
// does not add critical edges to the CFG.
|
||||
//
|
||||
// AU.addRequiredID(LoopSimplifyID);
|
||||
//
|
||||
Pass *createLoopSimplifyPass();
|
||||
extern char &LoopSimplifyID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// TailCallElimination - This pass eliminates call instructions to the current
|
||||
|
@ -319,30 +280,6 @@ extern char &LoopSimplifyID;
|
|||
//
|
||||
FunctionPass *createTailCallEliminationPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LowerSwitch - This pass converts SwitchInst instructions into a sequence of
|
||||
// chained binary branch instructions.
|
||||
//
|
||||
FunctionPass *createLowerSwitchPass();
|
||||
extern char &LowerSwitchID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LowerInvoke - This pass removes invoke instructions, converting them to call
|
||||
// instructions.
|
||||
//
|
||||
FunctionPass *createLowerInvokePass();
|
||||
extern char &LowerInvokePassID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LCSSA - This pass inserts phi nodes at loop boundaries to simplify other loop
|
||||
// optimizations.
|
||||
//
|
||||
Pass *createLCSSAPass();
|
||||
extern char &LCSSAID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// EarlyCSE - This pass performs a simple and fast CSE pass over the dominator
|
||||
|
@ -404,13 +341,6 @@ Pass *createLoopDeletionPass();
|
|||
//
|
||||
FunctionPass *createConstantHoistingPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// InstructionNamer - Give any unnamed non-void instructions "tmp" names.
|
||||
//
|
||||
FunctionPass *createInstructionNamerPass();
|
||||
extern char &InstructionNamerID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Sink - Code Sinking
|
||||
|
@ -450,13 +380,6 @@ Pass *createCorrelatedValuePropagationPass();
|
|||
FunctionPass *createInferAddressSpacesPass();
|
||||
extern char &InferAddressSpacesID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// InstructionSimplifier - Remove redundant instructions.
|
||||
//
|
||||
FunctionPass *createInstructionSimplifierPass();
|
||||
extern char &InstructionSimplifierID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LowerExpectIntrinsics - Removes llvm.expect intrinsics and creates
|
||||
|
@ -476,11 +399,6 @@ FunctionPass *createPartiallyInlineLibCallsPass();
|
|||
//
|
||||
FunctionPass *createScalarizerPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// AddDiscriminators - Add DWARF path discriminators to the IR.
|
||||
FunctionPass *createAddDiscriminatorsPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// SeparateConstOffsetFromGEP - Split GEPs for better CSE
|
||||
|
@ -548,13 +466,6 @@ FunctionPass *createLoopDistributePass();
|
|||
//
|
||||
FunctionPass *createLoopLoadEliminationPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopSimplifyCFG - This pass performs basic CFG simplification on loops,
|
||||
// primarily to help other loop passes.
|
||||
//
|
||||
Pass *createLoopSimplifyCFGPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopVersioning - Perform loop multi-versioning.
|
||||
|
@ -577,15 +488,6 @@ ModulePass *createNameAnonGlobalPass();
|
|||
//
|
||||
FunctionPass *createLibCallsShrinkWrapPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// EntryExitInstrumenter pass - Instrument function entry/exit with calls to
|
||||
// mcount(), @__cyg_profile_func_{enter,exit} and the like. There are two
|
||||
// variants, intended to run pre- and post-inlining, respectively.
|
||||
//
|
||||
FunctionPass *createEntryExitInstrumenterPass();
|
||||
FunctionPass *createPostInlineEntryExitInstrumenterPass();
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
//===- llvm/Transforms/Utils.h - Utility Transformations --------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This header file defines prototypes for accessor functions that expose passes
|
||||
// in the Utils transformations library.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_TRANSFORMS_UTILS_H
|
||||
#define LLVM_TRANSFORMS_UTILS_H
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class ModulePass;
|
||||
class FunctionPass;
|
||||
class Pass;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// createMetaRenamerPass - Rename everything with metasyntatic names.
|
||||
//
|
||||
ModulePass *createMetaRenamerPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LowerInvoke - This pass removes invoke instructions, converting them to call
|
||||
// instructions.
|
||||
//
|
||||
FunctionPass *createLowerInvokePass();
|
||||
extern char &LowerInvokePassID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// InstructionNamer - Give any unnamed non-void instructions "tmp" names.
|
||||
//
|
||||
FunctionPass *createInstructionNamerPass();
|
||||
extern char &InstructionNamerID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LowerSwitch - This pass converts SwitchInst instructions into a sequence of
|
||||
// chained binary branch instructions.
|
||||
//
|
||||
FunctionPass *createLowerSwitchPass();
|
||||
extern char &LowerSwitchID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// EntryExitInstrumenter pass - Instrument function entry/exit with calls to
|
||||
// mcount(), @__cyg_profile_func_{enter,exit} and the like. There are two
|
||||
// variants, intended to run pre- and post-inlining, respectively.
|
||||
//
|
||||
FunctionPass *createEntryExitInstrumenterPass();
|
||||
FunctionPass *createPostInlineEntryExitInstrumenterPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// BreakCriticalEdges - Break all of the critical edges in the CFG by inserting
|
||||
// a dummy basic block. This pass may be "required" by passes that cannot deal
|
||||
// with critical edges. For this usage, a pass must call:
|
||||
//
|
||||
// AU.addRequiredID(BreakCriticalEdgesID);
|
||||
//
|
||||
// This pass obviously invalidates the CFG, but can update forward dominator
|
||||
// (set, immediate dominators, tree, and frontier) information.
|
||||
//
|
||||
FunctionPass *createBreakCriticalEdgesPass();
|
||||
extern char &BreakCriticalEdgesID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LCSSA - This pass inserts phi nodes at loop boundaries to simplify other loop
|
||||
// optimizations.
|
||||
//
|
||||
Pass *createLCSSAPass();
|
||||
extern char &LCSSAID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// AddDiscriminators - Add DWARF path discriminators to the IR.
|
||||
FunctionPass *createAddDiscriminatorsPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// PromoteMemoryToRegister - This pass is used to promote memory references to
|
||||
// be register references. A simple example of the transformation performed by
|
||||
// this pass is:
|
||||
//
|
||||
// FROM CODE TO CODE
|
||||
// %X = alloca i32, i32 1 ret i32 42
|
||||
// store i32 42, i32 *%X
|
||||
// %Y = load i32* %X
|
||||
// ret i32 %Y
|
||||
//
|
||||
FunctionPass *createPromoteMemoryToRegisterPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopSimplify - Insert Pre-header blocks into the CFG for every function in
|
||||
// the module. This pass updates dominator information, loop information, and
|
||||
// does not add critical edges to the CFG.
|
||||
//
|
||||
// AU.addRequiredID(LoopSimplifyID);
|
||||
//
|
||||
Pass *createLoopSimplifyPass();
|
||||
extern char &LoopSimplifyID;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopSimplifyCFG - This pass performs basic CFG simplification on loops,
|
||||
// primarily to help other loop passes.
|
||||
//
|
||||
Pass *createLoopSimplifyCFGPass();
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// InstructionSimplifier - Remove redundant instructions.
|
||||
//
|
||||
FunctionPass *createInstructionSimplifierPass();
|
||||
extern char &InstructionSimplifierID;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -41,6 +41,7 @@
|
|||
#include "llvm/Support/Threading.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/SymbolRewriter.h"
|
||||
#include <cassert>
|
||||
#include <string>
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include "llvm/Support/KnownBits.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cassert>
|
||||
|
|
|
@ -138,6 +138,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include <cassert>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "wasm"
|
||||
|
|
|
@ -24,7 +24,6 @@ add_llvm_library(LLVMipo
|
|||
LoopExtractor.cpp
|
||||
LowerTypeTests.cpp
|
||||
MergeFunctions.cpp
|
||||
MetaRenamer.cpp
|
||||
PartialInlining.cpp
|
||||
PassManagerBuilder.cpp
|
||||
PruneEH.cpp
|
||||
|
|
|
@ -59,7 +59,6 @@ void llvm::initializeIPO(PassRegistry &Registry) {
|
|||
initializeSampleProfileLoaderLegacyPassPass(Registry);
|
||||
initializeFunctionImportLegacyPassPass(Registry);
|
||||
initializeWholeProgramDevirtPass(Registry);
|
||||
initializeMetaRenamerPass(Registry);
|
||||
}
|
||||
|
||||
void LLVMInitializeIPO(LLVMPassRegistryRef R) {
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Transforms/IPO.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/CodeExtractor.h"
|
||||
#include <fstream>
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Scalar/GVN.h"
|
||||
#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Vectorize.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include <cassert>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/LoopVersioning.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include <cassert>
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "llvm/IR/Dominators.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Scalar/LoopPassManager.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
using namespace llvm;
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
#include "llvm/Support/MathExtras.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Scalar/LoopPassManager.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/LoopSimplify.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include "llvm/Transforms/Utils/UnrollLoop.h"
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopVersioning.h"
|
||||
#include <cassert>
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include <list>
|
||||
using namespace llvm;
|
||||
|
||||
|
|
|
@ -178,10 +178,6 @@ void LLVMAddLoopRerollPass(LLVMPassManagerRef PM) {
|
|||
unwrap(PM)->add(createLoopRerollPass());
|
||||
}
|
||||
|
||||
void LLVMAddLoopSimplifyCFGPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createLoopSimplifyCFGPass());
|
||||
}
|
||||
|
||||
void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createLoopUnrollPass());
|
||||
}
|
||||
|
@ -198,14 +194,6 @@ void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM) {
|
|||
unwrap(PM)->add(createPartiallyInlineLibCallsPass());
|
||||
}
|
||||
|
||||
void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createLowerSwitchPass());
|
||||
}
|
||||
|
||||
void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createPromoteMemoryToRegisterPass());
|
||||
}
|
||||
|
||||
void LLVMAddReassociatePass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createReassociatePass());
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/SSAUpdater.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include <utility>
|
||||
|
||||
using namespace llvm;
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/Cloning.h"
|
||||
#include "llvm/Transforms/Utils/ValueMapper.h"
|
||||
|
|
|
@ -35,6 +35,7 @@ add_llvm_library(LLVMTransformUtils
|
|||
LowerMemIntrinsics.cpp
|
||||
LowerSwitch.cpp
|
||||
Mem2Reg.cpp
|
||||
MetaRenamer.cpp
|
||||
ModuleUtils.cpp
|
||||
NameAnonGlobals.cpp
|
||||
OrderedInstructions.cpp
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
static void insertCall(Function &CurFn, StringRef Func,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/PredIteratorCache.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
#include "llvm/Transforms/Utils/SSAUpdater.h"
|
||||
using namespace llvm;
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
using namespace llvm;
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/Analysis/LoopIterator.h"
|
||||
#include "llvm/Analysis/ScalarEvolution.h"
|
||||
|
@ -33,7 +33,7 @@
|
|||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/Cloning.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include "llvm/IR/LLVMContext.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "lowerinvoke"
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include "llvm/IR/PassManager.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/PromoteMemToReg.h"
|
||||
#include <vector>
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/IR/TypeFinder.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/IPO.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/DebugCounter.h"
|
||||
#include "llvm/Support/FormattedStream.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm/Transforms/Utils/OrderedInstructions.h"
|
||||
#include <algorithm>
|
||||
#define DEBUG_TYPE "predicateinfo"
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "instsimplify"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/Type.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
using namespace llvm;
|
||||
|
||||
char UnifyFunctionExitNodes::ID = 0;
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Transforms/Utils.h"
|
||||
#include "llvm-c/Initialization.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/PassRegistry.h"
|
||||
|
||||
|
@ -34,6 +36,7 @@ void llvm::initializeTransformUtils(PassRegistry &Registry) {
|
|||
initializeStripNonLineTableDebugInfoPass(Registry);
|
||||
initializeUnifyFunctionExitNodesPass(Registry);
|
||||
initializeInstSimplifierPass(Registry);
|
||||
initializeMetaRenamerPass(Registry);
|
||||
initializeStripGCRelocatesPass(Registry);
|
||||
initializePredicateInfoPrinterLegacyPassPass(Registry);
|
||||
}
|
||||
|
@ -42,3 +45,16 @@ void llvm::initializeTransformUtils(PassRegistry &Registry) {
|
|||
void LLVMInitializeTransformUtils(LLVMPassRegistryRef R) {
|
||||
initializeTransformUtils(*unwrap(R));
|
||||
}
|
||||
|
||||
void LLVMAddLoopSimplifyCFGPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createLoopSimplifyCFGPass());
|
||||
}
|
||||
|
||||
void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createLowerSwitchPass());
|
||||
}
|
||||
|
||||
void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM) {
|
||||
unwrap(PM)->add(createPromoteMemoryToRegisterPass());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue