I'm reposting these two patches that allow GCC to build on Fedora 36 just to be clear which patches I'm talking about. The issue is that if GCC is configured with long double using the IEEE 128-bit representation, it currently cannot build _mulkc3 and _divkc3 in libgcc.
Note, these patches do not solve the underlying problem of mixing _Float128 and long double types and using built-in functions (i.e. calling a _Float128 built-in function with long double arguments when long double is IEEE 128-bit, or vice versa calling a long double built-in function with _Float128 arguments). But they do allow the compiler to build. Note, it is the morning of February 3rd, and I will be off on vacation from February 7th through February 14th. The first patch changes libgcc so that it uses either _Float128 or long double as the base IEEE 128-bit type, depending on whether long double uses the IBM double-double representation, or the IEEE 128-bit representation. And for the complex type it uses _Complex _Float128 or _Complex long double. The _mulkc3 and _divkc3 functions are adjusted to use the f128 built-in functions or the long double built-in functions, based on the long double type. The second patch improves how the compiler generates the call to _mulkc3 and _divkc3. I've discovered as I have tried to fix underlying problem with the IEEE 128-bit floating point types, it breaks the calls for IEEE 128-bit complex multiply and divide. This patch uses a cleaner approach to generate these calls, and it will work with the current setup, and with the various fixes that I've attempted to do to fix the underlying problem. -- Michael Meissner, IBM PO Box 98, Ayer, Massachusetts, USA, 01432 email: meiss...@linux.ibm.com