[CodeGenPrepare] Move CodeGenPrepare into lib/CodeGen.

CodeGenPrepare uses extensively TargetLowering which is part of libLLVMCodeGen.
This is a layer violation which would introduce eventually a dependence on
CodeGen in ScalarOpts.

Move CodeGenPrepare into libLLVMCodeGen to avoid that.

Follow-up of <rdar://problem/15519855>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201912 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Quentin Colombet
2014-02-22 00:07:45 +00:00
parent 0206b30ea6
commit 8048c44580
14 changed files with 17 additions and 13 deletions

View File

@ -370,6 +370,10 @@ namespace llvm {
createMachineFunctionPrinterPass(raw_ostream &OS, createMachineFunctionPrinterPass(raw_ostream &OS,
const std::string &Banner =""); const std::string &Banner ="");
/// createCodeGenPreparePass - Transform the code to expose more pattern
/// matching during instruction selection.
FunctionPass *createCodeGenPreparePass(const TargetMachine *TM = 0);
/// MachineLoopInfo - This pass is a loop analysis pass. /// MachineLoopInfo - This pass is a loop analysis pass.
extern char &MachineLoopInfoID; extern char &MachineLoopInfoID;

View File

@ -316,12 +316,6 @@ Pass *createLoopDeletionPass();
// //
FunctionPass *createConstantHoistingPass(); FunctionPass *createConstantHoistingPass();
//===----------------------------------------------------------------------===//
//
// CodeGenPrepare - This pass prepares a function for instruction selection.
//
FunctionPass *createCodeGenPreparePass(const TargetMachine *TM = 0);
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
// InstructionNamer - Give any unnamed non-void instructions "tmp" names. // InstructionNamer - Give any unnamed non-void instructions "tmp" names.

View File

@ -7,6 +7,7 @@ add_llvm_library(LLVMCodeGen
CalcSpillWeights.cpp CalcSpillWeights.cpp
CallingConvLower.cpp CallingConvLower.cpp
CodeGen.cpp CodeGen.cpp
CodeGenPrepare.cpp
CriticalAntiDepBreaker.cpp CriticalAntiDepBreaker.cpp
DFAPacketizer.cpp DFAPacketizer.cpp
DeadMachineInstructionElim.cpp DeadMachineInstructionElim.cpp

View File

@ -22,6 +22,7 @@ using namespace llvm;
void llvm::initializeCodeGen(PassRegistry &Registry) { void llvm::initializeCodeGen(PassRegistry &Registry) {
initializeBasicTTIPass(Registry); initializeBasicTTIPass(Registry);
initializeBranchFolderPassPass(Registry); initializeBranchFolderPassPass(Registry);
initializeCodeGenPreparePass(Registry);
initializeDeadMachineInstructionElimPass(Registry); initializeDeadMachineInstructionElimPass(Registry);
initializeEarlyIfConverterPass(Registry); initializeEarlyIfConverterPass(Registry);
initializeExpandPostRAPass(Registry); initializeExpandPostRAPass(Registry);

View File

@ -14,7 +14,7 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#define DEBUG_TYPE "codegenprepare" #define DEBUG_TYPE "codegenprepare"
#include "llvm/Transforms/Scalar.h" #include "llvm/CodeGen/Passes.h"
#include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h" #include "llvm/ADT/Statistic.h"

View File

@ -1,6 +1,5 @@
add_llvm_library(LLVMScalarOpts add_llvm_library(LLVMScalarOpts
ADCE.cpp ADCE.cpp
CodeGenPrepare.cpp
ConstantHoisting.cpp ConstantHoisting.cpp
ConstantProp.cpp ConstantProp.cpp
CorrelatedValuePropagation.cpp CorrelatedValuePropagation.cpp

View File

@ -29,7 +29,6 @@ using namespace llvm;
void llvm::initializeScalarOpts(PassRegistry &Registry) { void llvm::initializeScalarOpts(PassRegistry &Registry) {
initializeADCEPass(Registry); initializeADCEPass(Registry);
initializeSampleProfileLoaderPass(Registry); initializeSampleProfileLoaderPass(Registry);
initializeCodeGenPreparePass(Registry);
initializeConstantHoistingPass(Registry); initializeConstantHoistingPass(Registry);
initializeConstantPropagationPass(Registry); initializeConstantPropagationPass(Registry);
initializeCorrelatedValuePropagationPass(Registry); initializeCorrelatedValuePropagationPass(Registry);

View File

@ -1,6 +1,7 @@
set(LLVM_LINK_COMPONENTS set(LLVM_LINK_COMPONENTS
Analysis Analysis
BitWriter BitWriter
CodeGen
Core Core
IPA IPA
IPO IPO

View File

@ -19,4 +19,4 @@
type = Tool type = Tool
name = bugpoint name = bugpoint
parent = Tools parent = Tools
required_libraries = AsmParser BitReader BitWriter IRReader IPO Instrumentation Linker Scalar ObjCARC required_libraries = AsmParser BitReader BitWriter CodeGen IRReader IPO Instrumentation Linker Scalar ObjCARC

View File

@ -10,7 +10,7 @@
LEVEL := ../.. LEVEL := ../..
TOOLNAME := bugpoint TOOLNAME := bugpoint
LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \ LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \
bitwriter irreader vectorize objcarcopts bitwriter irreader vectorize objcarcopts codegen
# Support plugins. # Support plugins.
NO_DEAD_STRIP := 1 NO_DEAD_STRIP := 1

View File

@ -2,6 +2,7 @@ set(LLVM_LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD} ${LLVM_TARGETS_TO_BUILD}
Analysis Analysis
BitWriter BitWriter
CodeGen
Core Core
IPA IPA
IPO IPO

View File

@ -19,4 +19,4 @@
type = Tool type = Tool
name = opt name = opt
parent = Tools parent = Tools
required_libraries = AsmParser BitReader BitWriter IRReader IPO Instrumentation Scalar ObjCARC all-targets required_libraries = AsmParser BitReader BitWriter CodeGen IRReader IPO Instrumentation Scalar ObjCARC all-targets

View File

@ -9,7 +9,7 @@
LEVEL := ../.. LEVEL := ../..
TOOLNAME := opt TOOLNAME := opt
LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets codegen
# Support plugins. # Support plugins.
NO_DEAD_STRIP := 1 NO_DEAD_STRIP := 1

View File

@ -22,6 +22,7 @@
#include "llvm/Analysis/RegionPass.h" #include "llvm/Analysis/RegionPass.h"
#include "llvm/Bitcode/BitcodeWriterPass.h" #include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/CommandFlags.h" #include "llvm/CodeGen/CommandFlags.h"
#include "llvm/InitializePasses.h"
#include "llvm/IR/DataLayout.h" #include "llvm/IR/DataLayout.h"
#include "llvm/IR/IRPrintingPasses.h" #include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LLVMContext.h" #include "llvm/IR/LLVMContext.h"
@ -340,6 +341,9 @@ int main(int argc, char **argv) {
initializeInstCombine(Registry); initializeInstCombine(Registry);
initializeInstrumentation(Registry); initializeInstrumentation(Registry);
initializeTarget(Registry); initializeTarget(Registry);
// For codegen passes, only passes that do IR to IR transformation are
// supported. For now, just add CodeGenPrepare.
initializeCodeGenPreparePass(Registry);
cl::ParseCommandLineOptions(argc, argv, cl::ParseCommandLineOptions(argc, argv,
"llvm .bc -> .bc modular optimizer and analysis printer\n"); "llvm .bc -> .bc modular optimizer and analysis printer\n");