From fde1b3bb2f15b74c713d98a79fcddaff1ac00dd1 Mon Sep 17 00:00:00 2001 From: Jim Laskey Date: Thu, 7 Sep 2006 23:39:26 +0000 Subject: [PATCH] 1. Remove condition on delete. 2. Protect and outline createTargetAsmInfo. 3. Misc. kruft. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30169 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetMachine.h | 8 ++++---- lib/Target/ARM/ARMTargetMachine.cpp | 7 +++++++ lib/Target/ARM/ARMTargetMachine.h | 9 ++++----- lib/Target/Alpha/AlphaTargetMachine.cpp | 8 ++++++-- lib/Target/Alpha/AlphaTargetMachine.h | 12 +++--------- lib/Target/IA64/IA64TargetMachine.cpp | 5 +++++ lib/Target/IA64/IA64TargetMachine.h | 9 ++++----- lib/Target/PowerPC/PPCTargetMachine.cpp | 5 +++++ lib/Target/PowerPC/PPCTargetMachine.h | 9 ++++----- lib/Target/Sparc/SparcTargetMachine.cpp | 5 +++++ lib/Target/Sparc/SparcTargetMachine.h | 9 ++++----- lib/Target/TargetMachine.cpp | 2 +- lib/Target/X86/X86TargetMachine.cpp | 5 +++++ lib/Target/X86/X86TargetMachine.h | 9 ++++----- 14 files changed, 61 insertions(+), 41 deletions(-) diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h index 6b5efd41496..13b0d37d5b4 100644 --- a/include/llvm/Target/TargetMachine.h +++ b/include/llvm/Target/TargetMachine.h @@ -76,6 +76,10 @@ protected: // Can only create subclasses. /// mutable const TargetAsmInfo *AsmInfo; + /// createTargetAsmInfo - Create a new instance of target specific asm + /// information. + virtual const TargetAsmInfo *createTargetAsmInfo() const { return NULL; } + public: virtual ~TargetMachine(); @@ -111,10 +115,6 @@ public: return AsmInfo; } - /// createTargetAsmInfo - Create a new instance of target specific asm - /// information. - virtual const TargetAsmInfo *createTargetAsmInfo() const { return NULL; } - /// getSubtarget - This method returns a pointer to the specified type of /// TargetSubtarget. In debug builds, it verifies that the object being /// returned is of the correct type. diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 175335f5c11..ccf0fb7ed67 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -11,6 +11,7 @@ // //===----------------------------------------------------------------------===// +#include "ARMTargetAsmInfo.h" #include "ARMTargetMachine.h" #include "ARMFrameInfo.h" #include "ARM.h" @@ -24,6 +25,12 @@ namespace { RegisterTarget X("arm", " ARM"); } + +const TargetAsmInfo *ARMTargetMachine::createTargetAsmInfo() const { + return new ARMTargetAsmInfo(*this); +} + + /// TargetMachine ctor - Create an ILP32 architecture model /// ARMTargetMachine::ARMTargetMachine(const Module &M, const std::string &FS) diff --git a/lib/Target/ARM/ARMTargetMachine.h b/lib/Target/ARM/ARMTargetMachine.h index bf8deba9c3b..b453f0b6478 100644 --- a/lib/Target/ARM/ARMTargetMachine.h +++ b/lib/Target/ARM/ARMTargetMachine.h @@ -20,7 +20,6 @@ #include "llvm/Target/TargetFrameInfo.h" #include "ARMInstrInfo.h" #include "ARMFrameInfo.h" -#include "ARMTargetAsmInfo.h" namespace llvm { @@ -30,6 +29,10 @@ class ARMTargetMachine : public LLVMTargetMachine { const TargetData DataLayout; // Calculates type size & alignment ARMInstrInfo InstrInfo; ARMFrameInfo FrameInfo; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + public: ARMTargetMachine(const Module &M, const std::string &FS); @@ -41,10 +44,6 @@ public: virtual const TargetData *getTargetData() const { return &DataLayout; } static unsigned getModuleMatchQuality(const Module &M); - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new ARMTargetAsmInfo(*this)); - } - // Pass Pipeline Configuration virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, diff --git a/lib/Target/Alpha/AlphaTargetMachine.cpp b/lib/Target/Alpha/AlphaTargetMachine.cpp index cbe0cdbf4d7..b752e4c1043 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.cpp +++ b/lib/Target/Alpha/AlphaTargetMachine.cpp @@ -12,6 +12,7 @@ #include "Alpha.h" #include "AlphaJITInfo.h" +#include "AlphaTargetAsmInfo.h" #include "AlphaTargetMachine.h" #include "llvm/Module.h" #include "llvm/PassManager.h" @@ -24,6 +25,10 @@ namespace { RegisterTarget X("alpha", " Alpha (incomplete)"); } +const TargetAsmInfo *AlphaTargetMachine::createTargetAsmInfo() const { + return new AlphaTargetAsmInfo(*this); +} + unsigned AlphaTargetMachine::getModuleMatchQuality(const Module &M) { // We strongly match "alpha*". std::string TT = M.getTargetTriple(); @@ -53,8 +58,7 @@ AlphaTargetMachine::AlphaTargetMachine(const Module &M, const std::string &FS) : DataLayout("e"), FrameInfo(TargetFrameInfo::StackGrowsDown, 16, 0), JITInfo(*this), - Subtarget(M, FS), - AsmInfo(NULL) { + Subtarget(M, FS) { } diff --git a/lib/Target/Alpha/AlphaTargetMachine.h b/lib/Target/Alpha/AlphaTargetMachine.h index d47ca8215c9..c00e71c8753 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.h +++ b/lib/Target/Alpha/AlphaTargetMachine.h @@ -20,7 +20,6 @@ #include "AlphaInstrInfo.h" #include "AlphaJITInfo.h" #include "AlphaSubtarget.h" -#include "AlphaTargetAsmInfo.h" namespace llvm { @@ -32,13 +31,12 @@ class AlphaTargetMachine : public LLVMTargetMachine { TargetFrameInfo FrameInfo; AlphaJITInfo JITInfo; AlphaSubtarget Subtarget; - AlphaTargetAsmInfo *AsmInfo; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; public: AlphaTargetMachine(const Module &M, const std::string &FS); - ~AlphaTargetMachine() { - if (AsmInfo) delete AsmInfo; - } virtual const AlphaInstrInfo *getInstrInfo() const { return &InstrInfo; } virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } @@ -51,10 +49,6 @@ public: return &JITInfo; } - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new AlphaTargetAsmInfo(*this)); - } - static unsigned getJITMatchQuality(); static unsigned getModuleMatchQuality(const Module &M); diff --git a/lib/Target/IA64/IA64TargetMachine.cpp b/lib/Target/IA64/IA64TargetMachine.cpp index 0f7821f5af7..d65ad3c4e1c 100644 --- a/lib/Target/IA64/IA64TargetMachine.cpp +++ b/lib/Target/IA64/IA64TargetMachine.cpp @@ -11,6 +11,7 @@ // //===----------------------------------------------------------------------===// +#include "IA64TargetAsmInfo.h" #include "IA64TargetMachine.h" #include "IA64.h" #include "llvm/Module.h" @@ -29,6 +30,10 @@ namespace { RegisterTarget X("ia64", " IA-64 (Itanium)"); } +const TargetAsmInfo *IA64TargetMachine::createTargetAsmInfo() const { + return new IA64TargetAsmInfo(*this); +} + unsigned IA64TargetMachine::getModuleMatchQuality(const Module &M) { // we match [iI][aA]*64 bool seenIA64=false; diff --git a/lib/Target/IA64/IA64TargetMachine.h b/lib/Target/IA64/IA64TargetMachine.h index 61ac05f6a2b..538a3303d3b 100644 --- a/lib/Target/IA64/IA64TargetMachine.h +++ b/lib/Target/IA64/IA64TargetMachine.h @@ -19,7 +19,6 @@ #include "llvm/Target/TargetFrameInfo.h" #include "IA64InstrInfo.h" #include "IA64ISelLowering.h" -#include "IA64TargetAsmInfo.h" namespace llvm { @@ -29,6 +28,10 @@ class IA64TargetMachine : public LLVMTargetMachine { TargetFrameInfo FrameInfo; //IA64JITInfo JITInfo; IA64TargetLowering TLInfo; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + public: IA64TargetMachine(const Module &M, const std::string &FS); @@ -42,10 +45,6 @@ public: } virtual const TargetData *getTargetData() const { return &DataLayout; } - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new IA64TargetAsmInfo(*this)); - } - static unsigned getModuleMatchQuality(const Module &M); // Pass Pipeline Configuration diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp index 91fc0a6b99e..ac20022d50e 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "PPC.h" +#include "PPCTargetAsmInfo.h" #include "PPCTargetMachine.h" #include "llvm/Module.h" #include "llvm/PassManager.h" @@ -26,6 +27,10 @@ namespace { Y("ppc64", " PowerPC 64"); } +const TargetAsmInfo *PPCTargetMachine::createTargetAsmInfo() const { + return new DarwinTargetAsmInfo(*this); +} + unsigned PPC32TargetMachine::getJITMatchQuality() { #if defined(__POWERPC__) || defined (__ppc__) || defined(_POWER) if (sizeof(void*) == 4) diff --git a/lib/Target/PowerPC/PPCTargetMachine.h b/lib/Target/PowerPC/PPCTargetMachine.h index d11f0158a02..777772e1fae 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.h +++ b/lib/Target/PowerPC/PPCTargetMachine.h @@ -19,7 +19,6 @@ #include "PPCJITInfo.h" #include "PPCInstrInfo.h" #include "PPCISelLowering.h" -#include "PPCTargetAsmInfo.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetData.h" @@ -37,6 +36,10 @@ class PPCTargetMachine : public LLVMTargetMachine { PPCJITInfo JITInfo; PPCTargetLowering TLInfo; InstrItineraryData InstrItins; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + public: PPCTargetMachine(const Module &M, const std::string &FS, bool is64Bit); @@ -56,10 +59,6 @@ public: return InstrItins; } - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new DarwinTargetAsmInfo(*this)); - } - // Pass Pipeline Configuration virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); virtual bool addPreEmitPass(FunctionPassManager &PM, bool Fast); diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp index 477e9544140..98912a23531 100644 --- a/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/lib/Target/Sparc/SparcTargetMachine.cpp @@ -10,6 +10,7 @@ // //===----------------------------------------------------------------------===// +#include "SparcTargetAsmInfo.h" #include "SparcTargetMachine.h" #include "Sparc.h" #include "llvm/Module.h" @@ -23,6 +24,10 @@ namespace { RegisterTarget X("sparc", " SPARC"); } +const TargetAsmInfo *SparcTargetMachine::createTargetAsmInfo() const { + return new SparcTargetAsmInfo(*this); +} + /// SparcTargetMachine ctor - Create an ILP32 architecture model /// SparcTargetMachine::SparcTargetMachine(const Module &M, const std::string &FS) diff --git a/lib/Target/Sparc/SparcTargetMachine.h b/lib/Target/Sparc/SparcTargetMachine.h index 995d346f924..cec0a446c0c 100644 --- a/lib/Target/Sparc/SparcTargetMachine.h +++ b/lib/Target/Sparc/SparcTargetMachine.h @@ -19,7 +19,6 @@ #include "llvm/Target/TargetFrameInfo.h" #include "SparcInstrInfo.h" #include "SparcSubtarget.h" -#include "SparcTargetAsmInfo.h" namespace llvm { @@ -30,6 +29,10 @@ class SparcTargetMachine : public LLVMTargetMachine { SparcSubtarget Subtarget; SparcInstrInfo InstrInfo; TargetFrameInfo FrameInfo; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + public: SparcTargetMachine(const Module &M, const std::string &FS); @@ -42,10 +45,6 @@ public: virtual const TargetData *getTargetData() const { return &DataLayout; } static unsigned getModuleMatchQuality(const Module &M); - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new SparcTargetAsmInfo(*this)); - } - // Pass Pipeline Configuration virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); virtual bool addPreEmitPass(FunctionPassManager &PM, bool Fast); diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp index 3ca64c44edb..e4ece7b4d52 100644 --- a/lib/Target/TargetMachine.cpp +++ b/lib/Target/TargetMachine.cpp @@ -96,7 +96,7 @@ namespace { // TargetMachine::~TargetMachine() { - if (AsmInfo) delete AsmInfo; + delete AsmInfo; } /// getRelocationModel - Returns the code generation relocation model. The diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp index ec449e42c49..807b462b90b 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -11,6 +11,7 @@ // //===----------------------------------------------------------------------===// +#include "X86TargetAsmInfo.h" #include "X86TargetMachine.h" #include "X86.h" #include "llvm/Module.h" @@ -35,6 +36,10 @@ namespace { RegisterTarget X("x86", " IA-32 (Pentium and above)"); } +const TargetAsmInfo *X86TargetMachine::createTargetAsmInfo() const { + return new X86TargetAsmInfo(*this); +} + unsigned X86TargetMachine::getJITMatchQuality() { #if defined(i386) || defined(__i386__) || defined(__x86__) || defined(_M_IX86) return 10; diff --git a/lib/Target/X86/X86TargetMachine.h b/lib/Target/X86/X86TargetMachine.h index 0bbef0582ff..8278cf1b22a 100644 --- a/lib/Target/X86/X86TargetMachine.h +++ b/lib/Target/X86/X86TargetMachine.h @@ -21,7 +21,6 @@ #include "X86InstrInfo.h" #include "X86JITInfo.h" #include "X86Subtarget.h" -#include "X86TargetAsmInfo.h" #include "X86ISelLowering.h" namespace llvm { @@ -33,6 +32,10 @@ class X86TargetMachine : public LLVMTargetMachine { X86InstrInfo InstrInfo; X86JITInfo JITInfo; X86TargetLowering TLInfo; + +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + public: X86TargetMachine(const Module &M, const std::string &FS); @@ -51,10 +54,6 @@ public: static unsigned getModuleMatchQuality(const Module &M); static unsigned getJITMatchQuality(); - virtual const TargetAsmInfo *createTargetAsmInfo() const { - return static_cast(new X86TargetAsmInfo(*this)); - } - // Set up the pass pipeline. virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); virtual bool addPostRegAlloc(FunctionPassManager &PM, bool Fast); -- 2.34.1