diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2015-01-31 11:17:59 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2015-01-31 11:17:59 +0000 |
commit | 93dcdc47db64b1674996d555786230873c83bdde (patch) | |
tree | ea487af3bf71bde23ad90436b32a0c4a9c8d3191 /llvm/lib/Target/XCore | |
parent | 9559a5c05e1fab06c7493eb34dd37cf06cb353d8 (diff) | |
download | bcm5719-llvm-93dcdc47db64b1674996d555786230873c83bdde.tar.gz bcm5719-llvm-93dcdc47db64b1674996d555786230873c83bdde.zip |
[PM] Switch the TargetMachine interface from accepting a pass manager
base which it adds a single analysis pass to, to instead return the type
erased TargetTransformInfo object constructed for that TargetMachine.
This removes all of the pass variants for TTI. There is now a single TTI
*pass* in the Analysis layer. All of the Analysis <-> Target
communication is through the TTI's type erased interface itself. While
the diff is large here, it is nothing more that code motion to make
types available in a header file for use in a different source file
within each target.
I've tried to keep all the doxygen comments and file boilerplate in line
with this move, but let me know if I missed anything.
With this in place, the next step to making TTI work with the new pass
manager is to introduce a really simple new-style analysis that produces
a TTI object via a callback into this routine on the target machine.
Once we have that, we'll have the building blocks necessary to accept
a function argument as well.
llvm-svn: 227685
Diffstat (limited to 'llvm/lib/Target/XCore')
-rw-r--r-- | llvm/lib/Target/XCore/CMakeLists.txt | 1 | ||||
-rw-r--r-- | llvm/lib/Target/XCore/XCoreTargetMachine.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/XCore/XCoreTargetMachine.h | 2 | ||||
-rw-r--r-- | llvm/lib/Target/XCore/XCoreTargetTransformInfo.h (renamed from llvm/lib/Target/XCore/XCoreTargetTransformInfo.cpp) | 29 |
4 files changed, 16 insertions, 21 deletions
diff --git a/llvm/lib/Target/XCore/CMakeLists.txt b/llvm/lib/Target/XCore/CMakeLists.txt index 5ad07544ef8..0a609ef76f4 100644 --- a/llvm/lib/Target/XCore/CMakeLists.txt +++ b/llvm/lib/Target/XCore/CMakeLists.txt @@ -22,7 +22,6 @@ add_llvm_target(XCoreCodeGen XCoreSubtarget.cpp XCoreTargetMachine.cpp XCoreTargetObjectFile.cpp - XCoreTargetTransformInfo.cpp XCoreSelectionDAGInfo.cpp XCoreFrameToArgsOffsetElim.cpp ) diff --git a/llvm/lib/Target/XCore/XCoreTargetMachine.cpp b/llvm/lib/Target/XCore/XCoreTargetMachine.cpp index 82df1c984be..d6832a372d1 100644 --- a/llvm/lib/Target/XCore/XCoreTargetMachine.cpp +++ b/llvm/lib/Target/XCore/XCoreTargetMachine.cpp @@ -12,6 +12,7 @@ #include "XCoreTargetMachine.h" #include "XCoreTargetObjectFile.h" +#include "XCoreTargetTransformInfo.h" #include "XCore.h" #include "llvm/CodeGen/Passes.h" #include "llvm/IR/Module.h" @@ -82,6 +83,6 @@ extern "C" void LLVMInitializeXCoreTarget() { RegisterTargetMachine<XCoreTargetMachine> X(TheXCoreTarget); } -void XCoreTargetMachine::addAnalysisPasses(PassManagerBase &PM) { - PM.add(createXCoreTargetTransformInfoPass(this)); +TargetTransformInfo XCoreTargetMachine::getTTI() { + return TargetTransformInfo(XCoreTTIImpl(this)); } diff --git a/llvm/lib/Target/XCore/XCoreTargetMachine.h b/llvm/lib/Target/XCore/XCoreTargetMachine.h index c18de6caf4a..ea9c36b02d5 100644 --- a/llvm/lib/Target/XCore/XCoreTargetMachine.h +++ b/llvm/lib/Target/XCore/XCoreTargetMachine.h @@ -36,7 +36,7 @@ public: // Pass Pipeline Configuration TargetPassConfig *createPassConfig(PassManagerBase &PM) override; - void addAnalysisPasses(PassManagerBase &PM) override; + TargetTransformInfo getTTI() override; TargetLoweringObjectFile *getObjFileLowering() const override { return TLOF.get(); } diff --git a/llvm/lib/Target/XCore/XCoreTargetTransformInfo.cpp b/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h index d2b152fc82e..5c2f36ff395 100644 --- a/llvm/lib/Target/XCore/XCoreTargetTransformInfo.cpp +++ b/llvm/lib/Target/XCore/XCoreTargetTransformInfo.h @@ -1,4 +1,4 @@ -//===-- XCoreTargetTransformInfo.cpp - XCore specific TTI pass ----------------===// +//===-- XCoreTargetTransformInfo.h - XCore specific TTI ---------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -7,25 +7,23 @@ // //===----------------------------------------------------------------------===// /// \file -/// This file implements a TargetTransformInfo analysis pass specific to the -/// XCore target machine. It uses the target's detailed information to provide -/// more precise answers to certain TTI queries, while letting the target -/// independent and default TTI implementations handle the rest. +/// This file a TargetTransformInfo::Concept conforming object specific to the +/// XCore target machine. It uses the target's detailed information to +/// provide more precise answers to certain TTI queries, while letting the +/// target independent and default TTI implementations handle the rest. /// //===----------------------------------------------------------------------===// +#ifndef LLVM_LIB_TARGET_XCORE_XCORETARGETTRANSFORMINFO_H +#define LLVM_LIB_TARGET_XCORE_XCORETARGETTRANSFORMINFO_H + #include "XCore.h" #include "XCoreTargetMachine.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/CodeGen/BasicTTIImpl.h" -#include "llvm/Support/Debug.h" -#include "llvm/Target/CostTable.h" #include "llvm/Target/TargetLowering.h" -using namespace llvm; - -#define DEBUG_TYPE "xcoretti" -namespace { +namespace llvm { class XCoreTTIImpl : public BasicTTIImplBase<XCoreTTIImpl> { typedef BasicTTIImplBase<XCoreTTIImpl> BaseT; @@ -50,15 +48,12 @@ public: unsigned getNumberOfRegisters(bool Vector) { if (Vector) { - return 0; + return 0; } return 12; } }; -} // end anonymous namespace +} // end namespace llvm -ImmutablePass * -llvm::createXCoreTargetTransformInfoPass(const XCoreTargetMachine *TM) { - return new TargetTransformInfoWrapperPass(XCoreTTIImpl(TM)); -} +#endif |