Browse Source

Revert "Expose a TargetMachine::getTargetTransformInfo function"

This reverts commit r321234.  It breaks the -DBUILD_SHARED_LIBS=ON build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@321243 91177308-0d34-0410-b5e6-96231b3b80d8
Sanjoy Das 7 years ago
parent
commit
0a1aae823b

+ 5 - 13
include/llvm/Target/TargetMachine.h

@@ -24,7 +24,6 @@
 
 
 namespace llvm {
 namespace llvm {
 
 
-class Function;
 class GlobalValue;
 class GlobalValue;
 class MachineModuleInfo;
 class MachineModuleInfo;
 class Mangler;
 class Mangler;
@@ -39,7 +38,6 @@ class PassManagerBuilder;
 class Target;
 class Target;
 class TargetIntrinsicInfo;
 class TargetIntrinsicInfo;
 class TargetIRAnalysis;
 class TargetIRAnalysis;
-class TargetTransformInfo;
 class TargetLoweringObjectFile;
 class TargetLoweringObjectFile;
 class TargetPassConfig;
 class TargetPassConfig;
 class TargetSubtargetInfo;
 class TargetSubtargetInfo;
@@ -206,13 +204,7 @@ public:
   /// This is used to construct the new pass manager's target IR analysis pass,
   /// This is used to construct the new pass manager's target IR analysis pass,
   /// set up appropriately for this target machine. Even the old pass manager
   /// set up appropriately for this target machine. Even the old pass manager
   /// uses this to answer queries about the IR.
   /// uses this to answer queries about the IR.
-  TargetIRAnalysis getTargetIRAnalysis();
-
-  /// \brief Return a TargetTransformInfo for a given function.
-  ///
-  /// The returned TargetTransformInfo is specialized to the subtarget
-  /// corresponding to \p F.
-  virtual TargetTransformInfo getTargetTransformInfo(const Function &F);
+  virtual TargetIRAnalysis getTargetIRAnalysis();
 
 
   /// Allow the target to modify the pass manager, e.g. by calling
   /// Allow the target to modify the pass manager, e.g. by calling
   /// PassManagerBuilder::addExtension.
   /// PassManagerBuilder::addExtension.
@@ -288,11 +280,11 @@ protected: // Can only create subclasses.
   void initAsmInfo();
   void initAsmInfo();
 
 
 public:
 public:
-  /// \brief Get a TargetTransformInfo implementation for the target.
+  /// \brief Get a TargetIRAnalysis implementation for the target.
   ///
   ///
-  /// The TTI returned uses the common code generator to answer queries about
-  /// the IR.
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  /// This analysis will produce a TTI result which uses the common code
+  /// generator to answer queries about the IR.
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   /// Create a pass configuration object to be used by addPassToEmitX methods
   /// Create a pass configuration object to be used by addPassToEmitX methods
   /// for generating a pipeline of CodeGen passes.
   /// for generating a pipeline of CodeGen passes.

+ 4 - 3
lib/CodeGen/LLVMTargetMachine.cpp

@@ -81,9 +81,10 @@ LLVMTargetMachine::LLVMTargetMachine(const Target &T,
   this->OptLevel = OL;
   this->OptLevel = OL;
 }
 }
 
 
-TargetTransformInfo
-LLVMTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(BasicTTIImpl(this, F));
+TargetIRAnalysis LLVMTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(BasicTTIImpl(this, F));
+  });
 }
 }
 
 
 /// addPassesToX helper drives creation and initialization of TargetPassConfig.
 /// addPassesToX helper drives creation and initialization of TargetPassConfig.

+ 4 - 3
lib/Target/AArch64/AArch64TargetMachine.cpp

@@ -346,9 +346,10 @@ public:
 
 
 } // end anonymous namespace
 } // end anonymous namespace
 
 
-TargetTransformInfo
-AArch64TargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(AArch64TTIImpl(this, F));
+TargetIRAnalysis AArch64TargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(AArch64TTIImpl(this, F));
+  });
 }
 }
 
 
 TargetPassConfig *AArch64TargetMachine::createPassConfig(PassManagerBase &PM) {
 TargetPassConfig *AArch64TargetMachine::createPassConfig(PassManagerBase &PM) {

+ 2 - 1
lib/Target/AArch64/AArch64TargetMachine.h

@@ -44,7 +44,8 @@ public:
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  /// \brief Get the TargetIRAnalysis for this target.
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   TargetLoweringObjectFile* getObjFileLowering() const override {
   TargetLoweringObjectFile* getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();

+ 5 - 3
lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

@@ -571,9 +571,10 @@ public:
 
 
 } // end anonymous namespace
 } // end anonymous namespace
 
 
-TargetTransformInfo
-AMDGPUTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(AMDGPUTTIImpl(this, F));
+TargetIRAnalysis AMDGPUTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(AMDGPUTTIImpl(this, F));
+  });
 }
 }
 
 
 void AMDGPUPassConfig::addEarlyCSEOrGVNPass() {
 void AMDGPUPassConfig::addEarlyCSEOrGVNPass() {
@@ -897,3 +898,4 @@ void GCNPassConfig::addPreEmitPass() {
 TargetPassConfig *GCNTargetMachine::createPassConfig(PassManagerBase &PM) {
 TargetPassConfig *GCNTargetMachine::createPassConfig(PassManagerBase &PM) {
   return new GCNPassConfig(*this, PM);
   return new GCNPassConfig(*this, PM);
 }
 }
+

+ 1 - 1
lib/Target/AMDGPU/AMDGPUTargetMachine.h

@@ -55,7 +55,7 @@ public:
   const AMDGPUIntrinsicInfo *getIntrinsicInfo() const override {
   const AMDGPUIntrinsicInfo *getIntrinsicInfo() const override {
     return &IntrinsicInfo;
     return &IntrinsicInfo;
   }
   }
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   TargetLoweringObjectFile *getObjFileLowering() const override {
   TargetLoweringObjectFile *getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();

+ 4 - 3
lib/Target/ARC/ARCTargetMachine.cpp

@@ -88,7 +88,8 @@ extern "C" void LLVMInitializeARCTarget() {
   RegisterTargetMachine<ARCTargetMachine> X(getTheARCTarget());
   RegisterTargetMachine<ARCTargetMachine> X(getTheARCTarget());
 }
 }
 
 
-TargetTransformInfo
-ARCTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(ARCTTIImpl(this, F));
+TargetIRAnalysis ARCTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(ARCTTIImpl(this, F));
+  });
 }
 }

+ 1 - 1
lib/Target/ARC/ARCTargetMachine.h

@@ -40,7 +40,7 @@ public:
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
   TargetLoweringObjectFile *getObjFileLowering() const override {
   TargetLoweringObjectFile *getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();
   }
   }

+ 4 - 3
lib/Target/ARM/ARMTargetMachine.cpp

@@ -283,9 +283,10 @@ ARMBaseTargetMachine::getSubtargetImpl(const Function &F) const {
   return I.get();
   return I.get();
 }
 }
 
 
-TargetTransformInfo
-ARMBaseTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(ARMTTIImpl(this, F));
+TargetIRAnalysis ARMBaseTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(ARMTTIImpl(this, F));
+  });
 }
 }
 
 
 ARMLETargetMachine::ARMLETargetMachine(const Target &T, const Triple &TT,
 ARMLETargetMachine::ARMLETargetMachine(const Target &T, const Triple &TT,

+ 2 - 1
lib/Target/ARM/ARMTargetMachine.h

@@ -53,7 +53,8 @@ public:
   const ARMSubtarget *getSubtargetImpl() const = delete;
   const ARMSubtarget *getSubtargetImpl() const = delete;
   bool isLittleEndian() const { return isLittle; }
   bool isLittleEndian() const { return isLittle; }
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  /// \brief Get the TargetIRAnalysis for this target.
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;

+ 4 - 3
lib/Target/Hexagon/HexagonTargetMachine.cpp

@@ -258,9 +258,10 @@ void HexagonTargetMachine::adjustPassManager(PassManagerBuilder &PMB) {
     });
     });
 }
 }
 
 
-TargetTransformInfo
-HexagonTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(HexagonTTIImpl(this, F));
+TargetIRAnalysis HexagonTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(HexagonTTIImpl(this, F));
+  });
 }
 }
 
 
 
 

+ 1 - 1
lib/Target/Hexagon/HexagonTargetMachine.h

@@ -39,7 +39,7 @@ public:
 
 
   void adjustPassManager(PassManagerBuilder &PMB) override;
   void adjustPassManager(PassManagerBuilder &PMB) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   HexagonTargetObjectFile *getObjFileLowering() const override {
   HexagonTargetObjectFile *getObjFileLowering() const override {
     return static_cast<HexagonTargetObjectFile*>(TLOF.get());
     return static_cast<HexagonTargetObjectFile*>(TLOF.get());

+ 4 - 3
lib/Target/Lanai/LanaiTargetMachine.cpp

@@ -74,9 +74,10 @@ LanaiTargetMachine::LanaiTargetMachine(const Target &T, const Triple &TT,
   initAsmInfo();
   initAsmInfo();
 }
 }
 
 
-TargetTransformInfo
-LanaiTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(LanaiTTIImpl(this, F));
+TargetIRAnalysis LanaiTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(LanaiTTIImpl(this, F));
+  });
 }
 }
 
 
 namespace {
 namespace {

+ 1 - 1
lib/Target/Lanai/LanaiTargetMachine.h

@@ -42,7 +42,7 @@ public:
     return &Subtarget;
     return &Subtarget;
   }
   }
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;
   TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;

+ 11 - 10
lib/Target/Mips/MipsTargetMachine.cpp

@@ -259,16 +259,17 @@ void MipsPassConfig::addPreRegAlloc() {
   addPass(createMipsOptimizePICCallPass());
   addPass(createMipsOptimizePICCallPass());
 }
 }
 
 
-TargetTransformInfo
-MipsTargetMachine::getTargetTransformInfo(const Function &F) {
-  if (Subtarget->allowMixed16_32()) {
-    DEBUG(errs() << "No Target Transform Info Pass Added\n");
-    // FIXME: This is no longer necessary as the TTI returned is per-function.
-    return TargetTransformInfo(F.getParent()->getDataLayout());
-  }
-
-  DEBUG(errs() << "Target Transform Info Pass Added\n");
-  return TargetTransformInfo(BasicTTIImpl(this, F));
+TargetIRAnalysis MipsTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    if (Subtarget->allowMixed16_32()) {
+      DEBUG(errs() << "No Target Transform Info Pass Added\n");
+      // FIXME: This is no longer necessary as the TTI returned is per-function.
+      return TargetTransformInfo(F.getParent()->getDataLayout());
+    }
+
+    DEBUG(errs() << "Target Transform Info Pass Added\n");
+    return TargetTransformInfo(BasicTTIImpl(this, F));
+  });
 }
 }
 
 
 // Implemented by targets that want to run passes immediately before
 // Implemented by targets that want to run passes immediately before

+ 1 - 1
lib/Target/Mips/MipsTargetMachine.h

@@ -44,7 +44,7 @@ public:
                     CodeGenOpt::Level OL, bool JIT, bool isLittle);
                     CodeGenOpt::Level OL, bool JIT, bool isLittle);
   ~MipsTargetMachine() override;
   ~MipsTargetMachine() override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   const MipsSubtarget *getSubtargetImpl() const {
   const MipsSubtarget *getSubtargetImpl() const {
     if (Subtarget)
     if (Subtarget)

+ 4 - 3
lib/Target/NVPTX/NVPTXTargetMachine.cpp

@@ -180,9 +180,10 @@ void NVPTXTargetMachine::adjustPassManager(PassManagerBuilder &Builder) {
     });
     });
 }
 }
 
 
-TargetTransformInfo
-NVPTXTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(NVPTXTTIImpl(this, F));
+TargetIRAnalysis NVPTXTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(NVPTXTTIImpl(this, F));
+  });
 }
 }
 
 
 void NVPTXPassConfig::addEarlyCSEOrGVNPass() {
 void NVPTXPassConfig::addEarlyCSEOrGVNPass() {

+ 1 - 1
lib/Target/NVPTX/NVPTXTargetMachine.h

@@ -63,7 +63,7 @@ public:
 
 
   void adjustPassManager(PassManagerBuilder &) override;
   void adjustPassManager(PassManagerBuilder &) override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   bool isMachineVerifierClean() const override {
   bool isMachineVerifierClean() const override {
     return false;
     return false;

+ 4 - 3
lib/Target/PowerPC/PPCTargetMachine.cpp

@@ -451,7 +451,8 @@ void PPCPassConfig::addPreEmitPass() {
   addPass(createPPCBranchSelectionPass(), false);
   addPass(createPPCBranchSelectionPass(), false);
 }
 }
 
 
-TargetTransformInfo
-PPCTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(PPCTTIImpl(this, F));
+TargetIRAnalysis PPCTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(PPCTTIImpl(this, F));
+  });
 }
 }

+ 1 - 1
lib/Target/PowerPC/PPCTargetMachine.h

@@ -49,7 +49,7 @@ public:
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   TargetLoweringObjectFile *getObjFileLowering() const override {
   TargetLoweringObjectFile *getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();

+ 4 - 3
lib/Target/SystemZ/SystemZTargetMachine.cpp

@@ -257,7 +257,8 @@ TargetPassConfig *SystemZTargetMachine::createPassConfig(PassManagerBase &PM) {
   return new SystemZPassConfig(*this, PM);
   return new SystemZPassConfig(*this, PM);
 }
 }
 
 
-TargetTransformInfo
-SystemZTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(SystemZTTIImpl(this, F));
+TargetIRAnalysis SystemZTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(SystemZTTIImpl(this, F));
+  });
 }
 }

+ 1 - 1
lib/Target/SystemZ/SystemZTargetMachine.h

@@ -44,7 +44,7 @@ public:
 
 
   // Override LLVMTargetMachine
   // Override LLVMTargetMachine
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   TargetLoweringObjectFile *getObjFileLowering() const override {
   TargetLoweringObjectFile *getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();

+ 4 - 9
lib/Target/TargetMachine.cpp

@@ -219,8 +219,10 @@ CodeGenOpt::Level TargetMachine::getOptLevel() const { return OptLevel; }
 
 
 void TargetMachine::setOptLevel(CodeGenOpt::Level Level) { OptLevel = Level; }
 void TargetMachine::setOptLevel(CodeGenOpt::Level Level) { OptLevel = Level; }
 
 
-TargetTransformInfo TargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(F.getParent()->getDataLayout());
+TargetIRAnalysis TargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([](const Function &F) {
+    return TargetTransformInfo(F.getParent()->getDataLayout());
+  });
 }
 }
 
 
 void TargetMachine::getNameWithPrefix(SmallVectorImpl<char> &Name,
 void TargetMachine::getNameWithPrefix(SmallVectorImpl<char> &Name,
@@ -242,10 +244,3 @@ MCSymbol *TargetMachine::getSymbol(const GlobalValue *GV) const {
   getNameWithPrefix(NameStr, GV, TLOF->getMangler());
   getNameWithPrefix(NameStr, GV, TLOF->getMangler());
   return TLOF->getContext().getOrCreateSymbol(NameStr);
   return TLOF->getContext().getOrCreateSymbol(NameStr);
 }
 }
-
-TargetIRAnalysis TargetMachine::getTargetIRAnalysis() {
-  // Since Analysis can't depend on Target, use a std::function to invert the
-  // dependency.
-  return TargetIRAnalysis(
-      [this](const Function &F) { return this->getTargetTransformInfo(F); });
-}

+ 4 - 3
lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp

@@ -146,9 +146,10 @@ public:
 };
 };
 } // end anonymous namespace
 } // end anonymous namespace
 
 
-TargetTransformInfo
-WebAssemblyTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(WebAssemblyTTIImpl(this, F));
+TargetIRAnalysis WebAssemblyTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(WebAssemblyTTIImpl(this, F));
+  });
 }
 }
 
 
 TargetPassConfig *
 TargetPassConfig *

+ 2 - 1
lib/Target/WebAssembly/WebAssemblyTargetMachine.h

@@ -43,7 +43,8 @@ public:
     return TLOF.get();
     return TLOF.get();
   }
   }
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  /// \brief Get the TargetIRAnalysis for this target.
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   bool usesPhysRegsForPEI() const override { return false; }
   bool usesPhysRegsForPEI() const override { return false; }
 };
 };

+ 4 - 3
lib/Target/X86/X86TargetMachine.cpp

@@ -281,9 +281,10 @@ UseVZeroUpper("x86-use-vzeroupper", cl::Hidden,
 // X86 TTI query.
 // X86 TTI query.
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//
 
 
-TargetTransformInfo
-X86TargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(X86TTIImpl(this, F));
+TargetIRAnalysis X86TargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(X86TTIImpl(this, F));
+  });
 }
 }
 
 
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//

+ 1 - 1
lib/Target/X86/X86TargetMachine.h

@@ -45,7 +45,7 @@ public:
   // attributes of each function.
   // attributes of each function.
   const X86Subtarget *getSubtargetImpl() const = delete;
   const X86Subtarget *getSubtargetImpl() const = delete;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   // Set up the pass pipeline.
   // Set up the pass pipeline.
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;

+ 4 - 3
lib/Target/XCore/XCoreTargetMachine.cpp

@@ -108,7 +108,8 @@ extern "C" void LLVMInitializeXCoreTarget() {
   RegisterTargetMachine<XCoreTargetMachine> X(getTheXCoreTarget());
   RegisterTargetMachine<XCoreTargetMachine> X(getTheXCoreTarget());
 }
 }
 
 
-TargetTransformInfo
-XCoreTargetMachine::getTargetTransformInfo(const Function &F) {
-  return TargetTransformInfo(XCoreTTIImpl(this, F));
+TargetIRAnalysis XCoreTargetMachine::getTargetIRAnalysis() {
+  return TargetIRAnalysis([this](const Function &F) {
+    return TargetTransformInfo(XCoreTTIImpl(this, F));
+  });
 }
 }

+ 1 - 1
lib/Target/XCore/XCoreTargetMachine.h

@@ -43,7 +43,7 @@ public:
   // Pass Pipeline Configuration
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
 
 
-  TargetTransformInfo getTargetTransformInfo(const Function &F) override;
+  TargetIRAnalysis getTargetIRAnalysis() override;
 
 
   TargetLoweringObjectFile *getObjFileLowering() const override {
   TargetLoweringObjectFile *getObjFileLowering() const override {
     return TLOF.get();
     return TLOF.get();