Eliminate IntrinsicLowering from TargetMachine.
authorChris Lattner <sabre@nondot.org>
Thu, 23 Mar 2006 05:43:16 +0000 (05:43 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 23 Mar 2006 05:43:16 +0000 (05:43 +0000)
Make the CBE and V9 backends create their own, since they're the only ones that use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26974 91177308-0d34-0410-b5e6-96231b3b80d8

17 files changed:
lib/Target/Alpha/AlphaTargetMachine.cpp
lib/Target/Alpha/AlphaTargetMachine.h
lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/CTargetMachine.h
lib/Target/CBackend/Writer.cpp
lib/Target/IA64/IA64TargetMachine.cpp
lib/Target/IA64/IA64TargetMachine.h
lib/Target/PowerPC/PPCTargetMachine.cpp
lib/Target/PowerPC/PPCTargetMachine.h
lib/Target/Sparc/SparcTargetMachine.cpp
lib/Target/Sparc/SparcTargetMachine.h
lib/Target/SparcV9/SparcV9BurgISel.cpp
lib/Target/SparcV9/SparcV9TargetMachine.cpp
lib/Target/SparcV9/SparcV9TargetMachine.h
lib/Target/TargetMachine.cpp
lib/Target/X86/X86TargetMachine.cpp
lib/Target/X86/X86TargetMachine.h

index dd593d1c0bcce76717435bbf2ec7a00727516b75..2daaab2d6dca651b373fd28dd46a973d179de030 100644 (file)
@@ -53,9 +53,8 @@ unsigned AlphaTargetMachine::getJITMatchQuality() {
 #endif
 }
 
-AlphaTargetMachine::AlphaTargetMachine(const Module &M, IntrinsicLowering *IL,
-                                       const std::string &FS)
-  : TargetMachine("alpha", IL, true),
+AlphaTargetMachine::AlphaTargetMachine(const Module &M, const std::string &FS)
+  : TargetMachine("alpha", true),
     FrameInfo(TargetFrameInfo::StackGrowsDown, 16, 0),
     JITInfo(*this),
     Subtarget(M, FS)
index 20ae44c7e156258bddfd35f09f7020a93d0c0983..8f6caeb6c2189c413ccd3dcdec6e95e6d9259ffa 100644 (file)
@@ -24,7 +24,6 @@
 namespace llvm {
 
 class GlobalValue;
-class IntrinsicLowering;
 
 class AlphaTargetMachine : public TargetMachine {
   AlphaInstrInfo InstrInfo;
@@ -33,8 +32,7 @@ class AlphaTargetMachine : public TargetMachine {
   AlphaSubtarget Subtarget;
 
 public:
-  AlphaTargetMachine(const Module &M, IntrinsicLowering *IL,
-                     const std::string &FS);
+  AlphaTargetMachine(const Module &M, const std::string &FS);
 
   virtual const AlphaInstrInfo *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo  *getFrameInfo() const { return &FrameInfo; }
index 89881897cd5d998302dc35ce7dc3083978eab3c9..53893870df37c26811fa0c5f3b484cb46ff3d03e 100644 (file)
@@ -67,7 +67,7 @@ namespace {
   /// module to a C translation unit.
   class CWriter : public FunctionPass, public InstVisitor<CWriter> {
     std::ostream &Out;
-    IntrinsicLowering &IL;
+    DefaultIntrinsicLowering IL;
     Mangler *Mang;
     LoopInfo *LI;
     const Module *TheModule;
@@ -75,7 +75,7 @@ namespace {
 
     std::map<const ConstantFP *, unsigned> FPConstantMap;
   public:
-    CWriter(std::ostream &o, IntrinsicLowering &il) : Out(o), IL(il) {}
+    CWriter(std::ostream &o) : Out(o) {}
 
     virtual const char *getPassName() const { return "C backend"; }
 
@@ -1931,6 +1931,6 @@ bool CTargetMachine::addPassesToEmitFile(PassManager &PM, std::ostream &o,
   PM.add(createLowerInvokePass());
   PM.add(createCFGSimplificationPass());   // clean up after lower invoke.
   PM.add(new CBackendNameAllUsedStructsAndMergeFunctions());
-  PM.add(new CWriter(o, getIntrinsicLowering()));
+  PM.add(new CWriter(o));
   return false;
 }
index f5894aab83c6715cf1114511ba5acea23eab1eab..f947f650c6763e166196868541cf2ef06fd7c8ac 100644 (file)
 #include "llvm/Target/TargetMachine.h"
 
 namespace llvm {
-class IntrinsicLowering;
 
 struct CTargetMachine : public TargetMachine {
-  CTargetMachine(const Module &M, IntrinsicLowering *IL,
-                 const std::string &FS) :
-    TargetMachine("CBackend", IL, M) {}
+  CTargetMachine(const Module &M, const std::string &FS)
+    : TargetMachine("CBackend", M) {}
 
   // This is the only thing that actually does anything here.
   virtual bool addPassesToEmitFile(PassManager &PM, std::ostream &Out,
index 89881897cd5d998302dc35ce7dc3083978eab3c9..53893870df37c26811fa0c5f3b484cb46ff3d03e 100644 (file)
@@ -67,7 +67,7 @@ namespace {
   /// module to a C translation unit.
   class CWriter : public FunctionPass, public InstVisitor<CWriter> {
     std::ostream &Out;
-    IntrinsicLowering &IL;
+    DefaultIntrinsicLowering IL;
     Mangler *Mang;
     LoopInfo *LI;
     const Module *TheModule;
@@ -75,7 +75,7 @@ namespace {
 
     std::map<const ConstantFP *, unsigned> FPConstantMap;
   public:
-    CWriter(std::ostream &o, IntrinsicLowering &il) : Out(o), IL(il) {}
+    CWriter(std::ostream &o) : Out(o) {}
 
     virtual const char *getPassName() const { return "C backend"; }
 
@@ -1931,6 +1931,6 @@ bool CTargetMachine::addPassesToEmitFile(PassManager &PM, std::ostream &o,
   PM.add(createLowerInvokePass());
   PM.add(createCFGSimplificationPass());   // clean up after lower invoke.
   PM.add(new CBackendNameAllUsedStructsAndMergeFunctions());
-  PM.add(new CWriter(o, getIntrinsicLowering()));
+  PM.add(new CWriter(o));
   return false;
 }
index 9757b991b6b8050bc238034ddc65b8eb96c67a94..4c7af4147919fca866223147776b35c8e99cd04c 100644 (file)
@@ -15,7 +15,6 @@
 #include "IA64.h"
 #include "llvm/Module.h"
 #include "llvm/PassManager.h"
-#include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/Target/TargetOptions.h"
@@ -76,9 +75,8 @@ unsigned IA64TargetMachine::getModuleMatchQuality(const Module &M) {
 
 /// IA64TargetMachine ctor - Create an LP64 architecture model
 ///
-IA64TargetMachine::IA64TargetMachine(const Module &M, IntrinsicLowering *IL,
-                                     const std::string &FS)
-  : TargetMachine("IA64", IL, true),
+IA64TargetMachine::IA64TargetMachine(const Module &M, const std::string &FS)
+  : TargetMachine("IA64", true),
     FrameInfo(TargetFrameInfo::StackGrowsDown, 16, 0),
     TLInfo(*this) { // FIXME? check this stuff
 }
index fb633bc51e0b1e954a9938de4dd9088440dcc3eb..7b9342ece5ba652972dd18ad2e5637a5f39551c2 100644 (file)
@@ -21,7 +21,6 @@
 #include "IA64ISelLowering.h"
 
 namespace llvm {
-class IntrinsicLowering;
 
 class IA64TargetMachine : public TargetMachine {
   IA64InstrInfo      InstrInfo;
@@ -29,8 +28,7 @@ class IA64TargetMachine : public TargetMachine {
   //IA64JITInfo      JITInfo;
   IA64TargetLowering TLInfo;
 public:
-  IA64TargetMachine(const Module &M, IntrinsicLowering *IL,
-                    const std::string &FS);
+  IA64TargetMachine(const Module &M, const std::string &FS);
 
   virtual const IA64InstrInfo      *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo    *getFrameInfo() const { return &FrameInfo; }
index 8985a4364f8a62c582071879f505fae7d49cbd80..60829560a32c1adc85c944d47069338b28cc0b9c 100644 (file)
@@ -18,7 +18,6 @@
 #include "llvm/Module.h"
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
-#include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/Target/TargetOptions.h"
@@ -58,9 +57,8 @@ unsigned PPCTargetMachine::getModuleMatchQuality(const Module &M) {
   return getJITMatchQuality()/2;
 }
 
-PPCTargetMachine::PPCTargetMachine(const Module &M, IntrinsicLowering *IL,
-                                   const std::string &FS)
-: TargetMachine("PowerPC", IL, false, 4, 4, 4, 4, 4, 4, 2, 1, 1),
+PPCTargetMachine::PPCTargetMachine(const Module &M, const std::string &FS)
+: TargetMachine("PowerPC", false, 4, 4, 4, 4, 4, 4, 2, 1, 1),
   Subtarget(M, FS), FrameInfo(*this, false), JITInfo(*this),
   TLInfo(*this), InstrItins(Subtarget.getInstrItineraryData()) {
   if (TargetDefault == PPCTarget) {
index 4038a2a84fad4735965146466d6e08e49ba5209e..3b2e481c7b5fae0e5379b9d31468f043b9e4dd8b 100644 (file)
@@ -23,9 +23,7 @@
 
 namespace llvm {
 class PassManager;
-class IntrinsicLowering;
 class GlobalValue;
-class IntrinsicLowering;
 
 class PPCTargetMachine : public TargetMachine {
   PPCInstrInfo           InstrInfo;
@@ -35,8 +33,7 @@ class PPCTargetMachine : public TargetMachine {
   PPCTargetLowering      TLInfo;
   InstrItineraryData     InstrItins;
 public:
-  PPCTargetMachine(const Module &M, IntrinsicLowering *IL,
-                   const std::string &FS);
+  PPCTargetMachine(const Module &M, const std::string &FS);
 
   virtual const PPCInstrInfo     *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo  *getFrameInfo() const { return &FrameInfo; }
index 2b545ac04ad06f6dca3750eabd9ba3b89a545a24..565ccb9bc14984cf10169e4012165686cd2e0574 100644 (file)
@@ -30,9 +30,8 @@ namespace {
 
 /// SparcTargetMachine ctor - Create an ILP32 architecture model
 ///
-SparcTargetMachine::SparcTargetMachine(const Module &M, IntrinsicLowering *IL,
-                                       const std::string &FS)
-  : TargetMachine("Sparc", IL, false, 4, 4),
+SparcTargetMachine::SparcTargetMachine(const Module &M, const std::string &FS)
+  : TargetMachine("Sparc", false, 4, 4),
     Subtarget(M, FS), InstrInfo(Subtarget),
     FrameInfo(TargetFrameInfo::StackGrowsDown, 8, 0) {
 }
index 196ad753d2a9a30d7def845644bbf43b93e1fe4b..0cad652f71daa1b287abeb6672e8f5d681e6ddeb 100644 (file)
@@ -22,7 +22,6 @@
 
 namespace llvm {
 
-class IntrinsicLowering;
 class Module;
 
 class SparcTargetMachine : public TargetMachine {
@@ -30,8 +29,7 @@ class SparcTargetMachine : public TargetMachine {
   SparcInstrInfo InstrInfo;
   TargetFrameInfo FrameInfo;
 public:
-  SparcTargetMachine(const Module &M, IntrinsicLowering *IL,
-                     const std::string &FS);
+  SparcTargetMachine(const Module &M, const std::string &FS);
 
   virtual const SparcInstrInfo *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo  *getFrameInfo() const { return &FrameInfo; }
index 1c03a9eb869cdc26219941080cf24a8481adf2e5..dcb99a7fb340f5ff8febb65a71f68c3d9ef1f25d 100644 (file)
@@ -4356,6 +4356,7 @@ void GetInstructionsByRule(InstructionNode* subtreeRoot, int ruleForNode,
 //==------------------------------------------------------------------------==//
 
 bool V9ISel::runOnFunction(Function &F) {
+  DefaultIntrinsicLowering IL;
   // First pass - Walk the function, lowering any calls to intrinsic functions
   // which the instruction selector cannot handle.
   for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
@@ -4376,7 +4377,7 @@ bool V9ISel::runOnFunction(Function &F) {
           default:
             // All other intrinsic calls we must lower.
             Instruction *Before = CI->getPrev();
-            Target.getIntrinsicLowering().LowerIntrinsicCall(CI);
+            IL.LowerIntrinsicCall(CI);
             if (Before) {        // Move iterator to instruction after call
               I = Before;  ++I;
             } else {
index 0748018682d345aa572385362ab5d699ba40a49b..a0d76bb4372f435e288429502aef8ad96d141331 100644 (file)
@@ -17,7 +17,6 @@
 #include "llvm/PassManager.h"
 #include "llvm/Assembly/PrintModulePass.h"
 #include "llvm/CodeGen/InstrScheduling.h"
-#include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/Target/TargetOptions.h"
@@ -147,10 +146,9 @@ FunctionPass *llvm::createSparcV9MachineCodeDestructionPass() {
 }
 
 
-SparcV9TargetMachine::SparcV9TargetMachine(const Module &M,
-                                           IntrinsicLowering *il,
+SparcV9TargetMachine::SparcV9TargetMachine(const Module &M, 
                                            const std::string &FS)
-  : TargetMachine("UltraSparcV9-Native", il, false),
+  : TargetMachine("UltraSparcV9-Native", false),
     schedInfo(*this),
     regInfo(*this),
     frameInfo(*this),
index 1f832825b2a45a799a9652f38a321fe9af3b3cad..3bbb6a4d695e698ad9b4195035415e2a666c1f45 100644 (file)
@@ -32,8 +32,7 @@ class SparcV9TargetMachine : public TargetMachine {
   SparcV9FrameInfo frameInfo;
   SparcV9JITInfo   jitInfo;
 public:
-  SparcV9TargetMachine(const Module &M, IntrinsicLowering *IL,
-                       const std::string &FS);
+  SparcV9TargetMachine(const Module &M, const std::string &FS);
 
   virtual const TargetInstrInfo  *getInstrInfo() const { return &instrInfo; }
   virtual const TargetSchedInfo  *getSchedInfo() const { return &schedInfo; }
index a2a4200b06752b48841c5466b4e2f4b053485f39..74c90ed54e2f2c96602fcc422436418cbaa70156 100644 (file)
@@ -14,7 +14,6 @@
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/Type.h"
-#include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/Support/CommandLine.h"
 using namespace llvm;
 
@@ -70,8 +69,7 @@ namespace {
 //---------------------------------------------------------------------------
 // TargetMachine Class
 //
-TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
-                             bool LittleEndian,
+TargetMachine::TargetMachine(const std::string &name, bool LittleEndian,
                              unsigned char PtrSize, unsigned char PtrAl,
                              unsigned char DoubleAl, unsigned char FloatAl,
                              unsigned char LongAl, unsigned char IntAl,
@@ -80,23 +78,17 @@ TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
   : Name(name), DataLayout(name, LittleEndian,
                            PtrSize, PtrAl, DoubleAl, FloatAl, LongAl,
                            IntAl, ShortAl, ByteAl, BoolAl) {
-  IL = il ? il : new DefaultIntrinsicLowering();
 }
 
-TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
-                             const TargetData &TD)
+TargetMachine::TargetMachine(const std::string &name, const TargetData &TD)
   : Name(name), DataLayout(TD) {
-  IL = il ? il : new DefaultIntrinsicLowering();
 }
 
-TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
-                             const Module &M)
+TargetMachine::TargetMachine(const std::string &name, const Module &M)
   : Name(name), DataLayout(name, &M) {
-  IL = il ? il : new DefaultIntrinsicLowering();
 }
 
 TargetMachine::~TargetMachine() {
-  delete IL;
 }
 
 /// getRelocationModel - Returns the code generation relocation model. The
index ef603ea107efa133dd197855c79b0ab93942d76c..f6d34ea2df5b68ce790a9ecfe868d8ca0f89782c 100644 (file)
@@ -15,7 +15,6 @@
 #include "X86.h"
 #include "llvm/Module.h"
 #include "llvm/PassManager.h"
-#include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/Passes.h"
 #include "llvm/Target/TargetOptions.h"
@@ -69,10 +68,8 @@ unsigned X86TargetMachine::getModuleMatchQuality(const Module &M) {
 
 /// X86TargetMachine ctor - Create an ILP32 architecture model
 ///
-X86TargetMachine::X86TargetMachine(const Module &M,
-                                  IntrinsicLowering *IL,
-                                  const std::string &FS)
-  : TargetMachine("X86", IL, true, 4, 4, 4, 4, 4),
+X86TargetMachine::X86TargetMachine(const Module &M, const std::string &FS)
+  : TargetMachine("X86", true, 4, 4, 4, 4, 4),
     Subtarget(M, FS),
     FrameInfo(TargetFrameInfo::StackGrowsDown,
               Subtarget.getStackAlignment(), -4),
index f63fc34bcd78450ab26228a9fa45a3f2972aee18..4ad0722354a17967056508f548b712283da24430 100644 (file)
@@ -24,7 +24,6 @@
 #include "X86ISelLowering.h"
 
 namespace llvm {
-class IntrinsicLowering;
 
 class X86TargetMachine : public TargetMachine {
   X86InstrInfo      InstrInfo;
@@ -33,8 +32,7 @@ class X86TargetMachine : public TargetMachine {
   X86JITInfo        JITInfo;
   X86TargetLowering TLInfo;
 public:
-  X86TargetMachine(const Module &M, IntrinsicLowering *IL,
-                   const std::string &FS);
+  X86TargetMachine(const Module &M, const std::string &FS);
 
   virtual const X86InstrInfo     *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo  *getFrameInfo() const { return &FrameInfo; }