From 9a6cf91261bb1420fedbd738d298b1e13f9ae71a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 12 Aug 2009 07:22:17 +0000 Subject: 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. llvm-svn: 78802 --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'llvm/lib/Target/PowerPC/PPCTargetMachine.cpp') diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp index 07667117a04..41f4699fc06 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/llvm/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 A(ThePPC32Target); RegisterTargetMachine 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) -- cgit v1.2.3