diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-03-18 00:58:53 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-03-18 00:58:53 +0000 |
commit | 6544baff6f9d2e81c13aa849f99a1d217eef525f (patch) | |
tree | dd407603688f2d4ccdc3829a200bd5c835caa529 /llvm/lib | |
parent | 1ff615ce4cc5decb0ac1aae826f66651d94f4982 (diff) | |
download | bcm5719-llvm-6544baff6f9d2e81c13aa849f99a1d217eef525f.tar.gz bcm5719-llvm-6544baff6f9d2e81c13aa849f99a1d217eef525f.zip |
MC/Darwin: Add a new target hook for whether the target uses "reliable" symbol differences, basically whether the assembler should attempt to understand atoms when using scattered symbols.
Also, avoid some virtual call overhead.
llvm-svn: 98789
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/MC/TargetAsmBackend.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86AsmBackend.cpp | 13 |
2 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/MC/TargetAsmBackend.cpp b/llvm/lib/MC/TargetAsmBackend.cpp index 918d2727daa..bbfddbe9e71 100644 --- a/llvm/lib/MC/TargetAsmBackend.cpp +++ b/llvm/lib/MC/TargetAsmBackend.cpp @@ -11,7 +11,10 @@ using namespace llvm; TargetAsmBackend::TargetAsmBackend(const Target &T) - : TheTarget(T) + : TheTarget(T), + HasAbsolutizedSet(false), + HasReliableSymbolDifference(false), + HasScatteredSymbols(false) { } diff --git a/llvm/lib/Target/X86/X86AsmBackend.cpp b/llvm/lib/Target/X86/X86AsmBackend.cpp index a44afc6984d..d7a9e1a9653 100644 --- a/llvm/lib/Target/X86/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/X86AsmBackend.cpp @@ -25,11 +25,10 @@ public: class DarwinX86AsmBackend : public X86AsmBackend { public: DarwinX86AsmBackend(const Target &T) - : X86AsmBackend(T) {} - - virtual bool hasAbsolutizedSet() const { return true; } - - virtual bool hasScatteredSymbols() const { return true; } + : X86AsmBackend(T) { + HasAbsolutizedSet = true; + HasScatteredSymbols = true; + } }; class DarwinX86_32AsmBackend : public DarwinX86AsmBackend { @@ -41,7 +40,9 @@ public: class DarwinX86_64AsmBackend : public DarwinX86AsmBackend { public: DarwinX86_64AsmBackend(const Target &T) - : DarwinX86AsmBackend(T) {} + : DarwinX86AsmBackend(T) { + HasReliableSymbolDifference = true; + } virtual bool doesSectionRequireSymbols(const MCSection &Section) const { // Temporary labels in the string literals sections require symbols. The |