diff options
author | Jim Grosbach <grosbach@apple.com> | 2013-11-16 00:52:57 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2013-11-16 00:52:57 +0000 |
commit | 664d148a92a88890b3d33be01949210d21b55b46 (patch) | |
tree | 882d4d9064db12979fa4f0b2b425f6fed55162a0 /llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | |
parent | 13dfdc88a9a22d4663d28c7319869ed597b88fbc (diff) | |
download | bcm5719-llvm-664d148a92a88890b3d33be01949210d21b55b46.tar.gz bcm5719-llvm-664d148a92a88890b3d33be01949210d21b55b46.zip |
X86: Encode the 'h' cpu subtype in the MachO header for x86.
llvm-svn: 194906
Diffstat (limited to 'llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp')
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp index 79605427c42..c1a710be5c2 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp @@ -9,6 +9,7 @@ #include "MCTargetDesc/X86BaseInfo.h" #include "MCTargetDesc/X86FixupKinds.h" +#include "llvm/ADT/StringSwitch.h" #include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCAssembler.h" #include "llvm/MC/MCELFObjectWriter.h" @@ -732,17 +733,19 @@ public: class DarwinX86_64AsmBackend : public DarwinX86AsmBackend { bool SupportsCU; + const MachO::CPUSubTypeX86 Subtype; public: DarwinX86_64AsmBackend(const Target &T, const MCRegisterInfo &MRI, - StringRef CPU, bool SupportsCU) - : DarwinX86AsmBackend(T, MRI, CPU, true), SupportsCU(SupportsCU) { + StringRef CPU, bool SupportsCU, + MachO::CPUSubTypeX86 st) + : DarwinX86AsmBackend(T, MRI, CPU, true), SupportsCU(SupportsCU), + Subtype(st) { HasReliableSymbolDifference = true; } MCObjectWriter *createObjectWriter(raw_ostream &OS) const { return createX86MachObjectWriter(OS, /*Is64Bit=*/true, - MachO::CPU_TYPE_X86_64, - MachO::CPU_SUBTYPE_X86_64_ALL); + MachO::CPU_TYPE_X86_64, Subtype); } virtual bool doesSectionRequireSymbols(const MCSection &Section) const { @@ -811,10 +814,15 @@ MCAsmBackend *llvm::createX86_64AsmBackend(const Target &T, StringRef CPU) { Triple TheTriple(TT); - if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO) + if (TheTriple.isOSDarwin() || TheTriple.getEnvironment() == Triple::MachO) { + MachO::CPUSubTypeX86 CS = + StringSwitch<MachO::CPUSubTypeX86>(TheTriple.getArchName()) + .Case("x86_64h", MachO::CPU_SUBTYPE_X86_64_H) + .Default(MachO::CPU_SUBTYPE_X86_64_ALL); return new DarwinX86_64AsmBackend(T, MRI, CPU, TheTriple.isMacOSX() && - !TheTriple.isMacOSXVersionLT(10, 7)); + !TheTriple.isMacOSXVersionLT(10, 7), CS); + } if (TheTriple.isOSWindows() && TheTriple.getEnvironment() != Triple::ELF) return new WindowsX86AsmBackend(T, true, CPU); |