This patch fixes PR libgcc/70363, which is a configuration issue if you build
GCC 6.x with an assembler that does not support the ISA 3.0 instructions. I
missed one emulation function that needed to be a different name if the IFUNC
functions added for ISA 3.0 support are not being built.
I built a trunk compiler with a stock assembler, and did a program with a
convert from __float128 to long double/__ibm128. If I did not include the
patch, the linker reported:
-genoa-> ~/fsf-install-ppc64le/trunk-at9x/bin/gcc -O2 test-float128-6.c
-DDEBUG && a.out
/tmp/ccbCLWdO.o: In function `print_hex.constprop.0':
test-float128-6.c:(.text+0x84): undefined reference to `__extendkftf2'
collect2: error: ld returned 1 exit status
If built a compiler with the patch, it succeeds. Is this patch ok to install
in the trunk?
2016-03-22 Michael Meissner
PR libgcc/70363
* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): If libgcc was
built with an assembler that does not support ISA 3.0
instructions, rename __extendkftf2_sw to __extendkftf2.
--
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Index: libgcc/config/rs6000/extendkftf2-sw.c
===
--- libgcc/config/rs6000/extendkftf2-sw.c (revision 234405)
+++ libgcc/config/rs6000/extendkftf2-sw.c (working copy)
@@ -39,6 +39,10 @@
#include "soft-fp.h"
#include "quad-float128.h"
+#ifndef FLOAT128_HW_INSNS
+#define __extendkftf2_sw __extendkftf2
+#endif
+
IBM128_TYPE
__extendkftf2_sw (__float128 value)
{