aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuraid Madina <duraid@octopus.com.au>2005-04-02 12:30:47 +0000
committerDuraid Madina <duraid@octopus.com.au>2005-04-02 12:30:47 +0000
commit32c46f33b73190f01403ee93eddba89785e0c14e (patch)
tree88b411e8c663c99a31200508ec7332d89b8a0000
parent855a51974134e818232e52d63a2c3b2b48c8e244 (diff)
ia64 asmprinter fixes:
- turn off assembler's autoalignment - set FunctionAddrPrefix/Suffix so that .data8 entries pointing to functions have their value wrapped in @fptr(), so that a function descriptor will be materialized for that function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21025 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/IA64/IA64AsmPrinter.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp
index 280186b8b2..64bdfc6b6e 100644
--- a/lib/Target/IA64/IA64AsmPrinter.cpp
+++ b/lib/Target/IA64/IA64AsmPrinter.cpp
@@ -142,9 +142,8 @@ bool IA64SharedAsmPrinter::doFinalization(Module &M) {
// FALL THROUGH
case GlobalValue::InternalLinkage:
if (C->isNullValue())
- SwitchSection(O, CurSection, ".data"); // FIXME: this was
- // '.bss', but in ia64-land .bss means "nobits" (i.e. uninitialized)
- // hmm.
+ SwitchSection(O, CurSection, ".bss");
+ // FIXME? in ia64-land .bss means "nobits" (i.e. uninitialized)
else
SwitchSection(O, CurSection, ".data");
break;
@@ -191,13 +190,18 @@ namespace {
: IA64SharedAsmPrinter(O, TM) {
CommentString = "//";
- Data8bitsDirective = "\tdata1\t";
- Data16bitsDirective = "\tdata2\t";
- Data32bitsDirective = "\tdata4\t";
- Data64bitsDirective = "\tdata8\t";
+ Data8bitsDirective = "\tdata1\t"; // FIXME: check that we are
+ Data16bitsDirective = "\tdata2.ua\t"; // disabling auto-alignment
+ Data32bitsDirective = "\tdata4.ua\t"; // properly
+ Data64bitsDirective = "\tdata8.ua\t";
ZeroDirective = "\t.skip\t";
AsciiDirective = "\tstring\t";
+ GlobalVarAddrPrefix="";
+ GlobalVarAddrSuffix="";
+ FunctionAddrPrefix="@fptr(";
+ FunctionAddrSuffix=")";
+
}
virtual const char *getPassName() const {