https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70363
Bug ID: 70363
Summary: PowerPC __float128 to long double doesn't link if
built with an assember without ISA 3.0 support
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgcc
Assignee: unassigned at gcc dot gnu.org
Reporter: meissner at gcc dot gnu.org
Target Milestone: ---
Created attachment 38062
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38062&action=edit
Compile this file with -DDEBUG to see the problem
If you build a GCC compiler from the trunk and build it with an assembler that
does not have support for the ISA 3.0 IEEE 128-bit instructions, and convert
__float128 to long double (or __ibm128), you will get a link error:
test-float128-6.c:(.text+0x84): undefined reference to `__extendkftf2'
This is due to the support in libgcc to allow using the ISA 3.0 instructions
via ifunc functions if you are running on a system with the instructions.
However, if you build libgcc with an assembler that doesn't support these
instructions, it should eliminate the ifunc support, and compile all of the
emulator functions without the _sw suffix.
Unfortunately extendkftf2-sw.c did not have the proper #ifdef support.