diff options
author | Duraid Madina <duraid@octopus.com.au> | 2005-04-02 12:30:47 +0000 |
---|---|---|
committer | Duraid Madina <duraid@octopus.com.au> | 2005-04-02 12:30:47 +0000 |
commit | 32c46f33b73190f01403ee93eddba89785e0c14e (patch) | |
tree | 88b411e8c663c99a31200508ec7332d89b8a0000 | |
parent | 855a51974134e818232e52d63a2c3b2b48c8e244 (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.cpp | 18 |
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 { |