https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101002

--- Comment #5 from Peter Bergner <bergner at gcc dot gnu.org> ---
(In reply to Peter Bergner from comment #4)
> gcc.target/powerpc/pr85657-3.c
> gcc.target/powerpc/signbit-1.c
> pr85657-3.c:38:20: error: unknown type name ‘__ibm128’; did you mean
> ‘__int128’?
> 
> These die because we don't create the type __ibm128 when using
> -mlong-double-64, which seems strange since we do create the __float128 type
> used in the test cases.
> 
> Mike, I assume the __ibm128 type should always be created?

The creation of the __ibm128 type is guarded by:

  if (TARGET_LONG_DOUBLE_128 && (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE))

Since the __ibm128 type is independent of what long double defaults to, I
assume the fix is to just remove the TARGET_LONG_DOUBLE_128 test giving us:

  if (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE)

Or are there some (bad) inherent assumptions in the backend that IBM double
double support needing a 128-bit long double?


The creation of the __ieee128 type is only guarded by:

  if (TARGET_FLOAT128_TYPE)

Reply via email to