diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-08-12 07:22:17 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-08-12 07:22:17 +0000 |
| commit | d88f9fd3f28cee69b0fcdca59532824d5617577e (patch) | |
| tree | ac43fb9b39f3a7abe8aa7cb217860e4d29329963 /lib/Target/PowerPC | |
| parent | cdd849e6363813d9dad21dd4da5e4d47f60b551f (diff) | |
| download | external_llvm-d88f9fd3f28cee69b0fcdca59532824d5617577e.zip external_llvm-d88f9fd3f28cee69b0fcdca59532824d5617577e.tar.gz external_llvm-d88f9fd3f28cee69b0fcdca59532824d5617577e.tar.bz2 | |
Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC')
| -rw-r--r-- | lib/Target/PowerPC/PPCTargetMachine.cpp | 18 | ||||
| -rw-r--r-- | lib/Target/PowerPC/PPCTargetMachine.h | 3 |
2 files changed, 13 insertions, 8 deletions
diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp index 0766711..41f4699 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -20,17 +20,25 @@ #include "llvm/Support/FormattedStream.h" using namespace llvm; +static const TargetAsmInfo *createTargetAsmInfo(const Target &T, + const StringRef &TT) { + Triple TheTriple(TT); + bool isPPC64 = TheTriple.getArch() == Triple::ppc64; + if (TheTriple.getOS() == Triple::Darwin) + return new PPCDarwinTargetAsmInfo(isPPC64); + return new PPCLinuxTargetAsmInfo(isPPC64); + +} + extern "C" void LLVMInitializePowerPCTarget() { // Register the targets RegisterTargetMachine<PPC32TargetMachine> A(ThePPC32Target); RegisterTargetMachine<PPC64TargetMachine> B(ThePPC64Target); + + RegisterAsmInfoFn C(ThePPC32Target, createTargetAsmInfo); + RegisterAsmInfoFn D(ThePPC64Target, createTargetAsmInfo); } -const TargetAsmInfo *PPCTargetMachine::createTargetAsmInfo() const { - if (Subtarget.isDarwin()) - return new PPCDarwinTargetAsmInfo(Subtarget.isPPC64()); - return new PPCLinuxTargetAsmInfo(Subtarget.isPPC64()); -} PPCTargetMachine::PPCTargetMachine(const Target &T, const std::string &TT, const std::string &FS, bool is64Bit) diff --git a/lib/Target/PowerPC/PPCTargetMachine.h b/lib/Target/PowerPC/PPCTargetMachine.h index b7ac6ef..3399ac8 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.h +++ b/lib/Target/PowerPC/PPCTargetMachine.h @@ -39,9 +39,6 @@ class PPCTargetMachine : public LLVMTargetMachine { InstrItineraryData InstrItins; PPCMachOWriterInfo MachOWriterInfo; -protected: - virtual const TargetAsmInfo *createTargetAsmInfo() const; - public: PPCTargetMachine(const Target &T, const std::string &TT, const std::string &FS, bool is64Bit); |
