summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0206b30)
raw | patch | inline | side by side (parent: 0206b30)
author | Quentin Colombet <qcolombet@apple.com> | |
Sat, 22 Feb 2014 00:07:45 +0000 (00:07 +0000) | ||
committer | Quentin Colombet <qcolombet@apple.com> | |
Sat, 22 Feb 2014 00:07:45 +0000 (00:07 +0000) |
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 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
14 files changed:
index 3be21e02421776c633b12ad9c7610b210e647b1f..5d68f8637b7471ff967b62995e57f887ec31bcb2 100644 (file)
createMachineFunctionPrinterPass(raw_ostream &OS,
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.
extern char &MachineLoopInfoID;
index e1890f68038ec56ab324f165d2eab2dca50f3db9..cacd4cb51b6738916b35404a850aa87764e29802 100644 (file)
//
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.
index 123d86f9504f24eba7f3761a076a99c7851dc140..8943cb11c6b9b5d52b4712418b567abaf4ae613b 100644 (file)
CalcSpillWeights.cpp
CallingConvLower.cpp
CodeGen.cpp
+ CodeGenPrepare.cpp
CriticalAntiDepBreaker.cpp
DFAPacketizer.cpp
DeadMachineInstructionElim.cpp
index c0db5a54b874f1409b038c1c237ea25aa75bda37..17402f066da36b2a66c9c26f8dab240b8bcf3ecb 100644 (file)
--- a/lib/CodeGen/CodeGen.cpp
+++ b/lib/CodeGen/CodeGen.cpp
void llvm::initializeCodeGen(PassRegistry &Registry) {
initializeBasicTTIPass(Registry);
initializeBranchFolderPassPass(Registry);
+ initializeCodeGenPreparePass(Registry);
initializeDeadMachineInstructionElimPass(Registry);
initializeEarlyIfConverterPass(Registry);
initializeExpandPostRAPass(Registry);
similarity index 99%
rename from lib/Transforms/Scalar/CodeGenPrepare.cpp
rename to lib/CodeGen/CodeGenPrepare.cpp
index 3c9ecce8e3e2eb14f7fdb7e63f9d3ccd5bc69603..e81a9098ef5a3ae41b840baef2bfc9c0ba30d1ce 100644 (file)
rename from lib/Transforms/Scalar/CodeGenPrepare.cpp
rename to lib/CodeGen/CodeGenPrepare.cpp
index 3c9ecce8e3e2eb14f7fdb7e63f9d3ccd5bc69603..e81a9098ef5a3ae41b840baef2bfc9c0ba30d1ce 100644 (file)
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "codegenprepare"
-#include "llvm/Transforms/Scalar.h"
+#include "llvm/CodeGen/Passes.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
index 8a29b0c48cb42721080b41776098c6727b63e3e2..27434c1808a43b606c2d20e30db4b1ea5b0d99a5 100644 (file)
add_llvm_library(LLVMScalarOpts
ADCE.cpp
- CodeGenPrepare.cpp
ConstantHoisting.cpp
ConstantProp.cpp
CorrelatedValuePropagation.cpp
index f774874cb47cad7d5d79306413044a19a7779ea1..e950ebacd84c7a04a9eb47729136e008fba935fd 100644 (file)
void llvm::initializeScalarOpts(PassRegistry &Registry) {
initializeADCEPass(Registry);
initializeSampleProfileLoaderPass(Registry);
- initializeCodeGenPreparePass(Registry);
initializeConstantHoistingPass(Registry);
initializeConstantPropagationPass(Registry);
initializeCorrelatedValuePropagationPass(Registry);
index 14f5a3b004b450a02dd4823668fc4304827bc29c..b537a5d237d8ba88326c18f434ebcaaa60cc62d9 100644 (file)
set(LLVM_LINK_COMPONENTS
Analysis
BitWriter
+ CodeGen
Core
IPA
IPO
index 01643553c5b512a53faa7b093794bac2ce29d598..dda8d624fc746f8b62888b10c99650f41aadf33f 100644 (file)
type = Tool
name = bugpoint
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
index 96c0fcf519e651d6900072ef8d982935ffabb827..174f8d25161eef3c4e8f1c2262b27f593b68a52d 100644 (file)
--- a/tools/bugpoint/Makefile
+++ b/tools/bugpoint/Makefile
LEVEL := ../..
TOOLNAME := bugpoint
LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \
- bitwriter irreader vectorize objcarcopts
+ bitwriter irreader vectorize objcarcopts codegen
# Support plugins.
NO_DEAD_STRIP := 1
index 953815be36659258ce6dee2c3cd9cbef5799801a..1f76ab55511b43a32364d018f385c59c69b00dcf 100644 (file)
--- a/tools/opt/CMakeLists.txt
+++ b/tools/opt/CMakeLists.txt
${LLVM_TARGETS_TO_BUILD}
Analysis
BitWriter
+ CodeGen
Core
IPA
IPO
index 77b94469edd55d5c74f14d9e26a01a88c105d0e1..b3589f854ff19bb4f3be77e2cb2812469d3b36b7 100644 (file)
--- a/tools/opt/LLVMBuild.txt
+++ b/tools/opt/LLVMBuild.txt
type = Tool
name = opt
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
diff --git a/tools/opt/Makefile b/tools/opt/Makefile
index fa2d0145531953b9aae244fba226c2140bc51411..cfa9c31cb95855633c271c64895402553fde5be3 100644 (file)
--- a/tools/opt/Makefile
+++ b/tools/opt/Makefile
LEVEL := ../..
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.
NO_DEAD_STRIP := 1
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index fa9bc678c3503c9c94b709dacef3ee9eecb2e648..b9d3f9d6d21b9c774164cff0daf57bbcf40fb196 100644 (file)
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
#include "llvm/Analysis/RegionPass.h"
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/CommandFlags.h"
+#include "llvm/InitializePasses.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/LLVMContext.h"
initializeInstCombine(Registry);
initializeInstrumentation(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,
"llvm .bc -> .bc modular optimizer and analysis printer\n");