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/ARM/ARMTargetMachine.cpp | |
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/ARM/ARMTargetMachine.cpp')
-rw-r--r-- | lib/Target/ARM/ARMTargetMachine.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index c66570b..fbc5f38 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -27,10 +27,26 @@ static cl::opt<bool> DisableLdStOpti("disable-arm-loadstore-opti", cl::Hidden, static cl::opt<bool> DisableIfConversion("disable-arm-if-conversion",cl::Hidden, cl::desc("Disable if-conversion pass")); +static const TargetAsmInfo *createTargetAsmInfo(const Target &T, + const StringRef &TT) { + Triple TheTriple(TT); + switch (TheTriple.getOS()) { + case Triple::Darwin: + return new ARMDarwinTargetAsmInfo(); + default: + return new ARMELFTargetAsmInfo(); + } +} + + extern "C" void LLVMInitializeARMTarget() { // Register the target. RegisterTargetMachine<ARMTargetMachine> X(TheARMTarget); RegisterTargetMachine<ThumbTargetMachine> Y(TheThumbTarget); + + // Register the target asm info. + RegisterAsmInfoFn A(TheARMTarget, createTargetAsmInfo); + RegisterAsmInfoFn B(TheThumbTarget, createTargetAsmInfo); } /// TargetMachine ctor - Create an ARM architecture model. @@ -73,16 +89,6 @@ ThumbTargetMachine::ThumbTargetMachine(const Target &T, const std::string &TT, } -const TargetAsmInfo *ARMBaseTargetMachine::createTargetAsmInfo() const { - switch (Subtarget.TargetType) { - default: llvm_unreachable("Unknown ARM subtarget kind"); - case ARMSubtarget::isDarwin: - return new ARMDarwinTargetAsmInfo(); - case ARMSubtarget::isELF: - return new ARMELFTargetAsmInfo(); - } -} - // Pass Pipeline Configuration bool ARMBaseTargetMachine::addInstSelector(PassManagerBase &PM, |