summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-18 00:58:53 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-18 00:58:53 +0000
commit6544baff6f9d2e81c13aa849f99a1d217eef525f (patch)
treedd407603688f2d4ccdc3829a200bd5c835caa529 /llvm/lib
parent1ff615ce4cc5decb0ac1aae826f66651d94f4982 (diff)
downloadbcm5719-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.cpp5
-rw-r--r--llvm/lib/Target/X86/X86AsmBackend.cpp13
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
OpenPOWER on IntegriCloud