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
This commit is contained in:
Chris Lattner
2009-08-12 07:22:17 +00:00
parent 54d26fa799
commit a7ac47cee1
50 changed files with 210 additions and 168 deletions

View File

@@ -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)