aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Target/PowerPC/PPCAsmPrinter.cpp12
-rw-r--r--test/CodeGen/PowerPC/pr13641.ll1
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp
index de32415..1c9a23a 100644
--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -458,11 +458,15 @@ bool PPCLinuxAsmPrinter::doFinalization(Module &M) {
void PPCLinuxAsmPrinter::EmitFunctionBodyEnd() {
// Only the 64-bit target requires a traceback table. For now,
// we only emit the word of zeroes that GDB requires to find
- // the end of the function.
- // FIXME: Eventually we should add the eight-byte mandatory fields
- // described in the PPC64 ELF ABI.
- if (Subtarget.isPPC64())
+ // the end of the function, and zeroes for the eight-byte
+ // mandatory fields.
+ // FIXME: We should fill in the eight-byte mandatory fields as described in
+ // the PPC64 ELF ABI (this is a low-priority item because GDB does not
+ // currently make use of these fields).
+ if (Subtarget.isPPC64()) {
OutStreamer.EmitIntValue(0, 4/*size*/);
+ OutStreamer.EmitIntValue(0, 8/*size*/);
+ }
}
void PPCDarwinAsmPrinter::EmitStartOfAsmFile(Module &M) {
diff --git a/test/CodeGen/PowerPC/pr13641.ll b/test/CodeGen/PowerPC/pr13641.ll
index e80fbea..c4d3f3a 100644
--- a/test/CodeGen/PowerPC/pr13641.ll
+++ b/test/CodeGen/PowerPC/pr13641.ll
@@ -8,3 +8,4 @@ define void @foo() nounwind {
; CHECK: blr
; CHECK-NEXT: .long 0
+; CHECK-NEXT: .quad 0