ia64 asmprinter fixes:
authorDuraid Madina <duraid@octopus.com.au>
Sat, 2 Apr 2005 12:30:47 +0000 (12:30 +0000)
committerDuraid Madina <duraid@octopus.com.au>
Sat, 2 Apr 2005 12:30:47 +0000 (12:30 +0000)
  - 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

lib/Target/IA64/IA64AsmPrinter.cpp

index 280186b8b237dd7fd33acc6e5f8fb943592ad6d3..64bdfc6b6e9002495e2fa992b116b36ab12d6881 100644 (file)
@@ -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 {