This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
Straying #endif in ppc_closure.S
- From: Alan Modra <amodra at gmail dot com>
- To: libffi-discuss at sourceware dot org
- Date: Sun, 17 Nov 2013 13:46:50 +1030
- Subject: Straying #endif in ppc_closure.S
- Authentication-results: sourceware.org; auth=none
An #endif in the wrong place would cause compile failure on powerpcle.
Using bl instead of b doesn't cause runtime failures as you might think,
but does mess the processor branch prediction.
* src/powerpc/ppc_closure.S: Move errant #endif to where it belongs.
Don't bl .Luint128.
diff --git a/src/powerpc/ppc_closure.S b/src/powerpc/ppc_closure.S
index 3eefe7e..1f72340 100644
--- a/src/powerpc/ppc_closure.S
+++ b/src/powerpc/ppc_closure.S
@@ -238,7 +238,7 @@ ENTRY(ffi_closure_SYSV)
lwz %r3,112+0(%r1)
lwz %r4,112+4(%r1)
lwz %r5,112+8(%r1)
- bl .Luint128
+ b .Luint128
# The return types below are only used when the ABI type is FFI_SYSV.
# case FFI_SYSV_TYPE_SMALL_STRUCT + 1. One byte struct.
@@ -320,13 +320,13 @@ ENTRY(ffi_closure_SYSV)
mtlr %r0
addi %r1,%r1,144
blr
+#endif
.Luint128:
lwz %r6,112+12(%r1)
mtlr %r0
addi %r1,%r1,144
blr
-#endif
END(ffi_closure_SYSV)
--
Alan Modra
Australia Development Lab, IBM