[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-06 Thread schwab--- via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #7 from Andreas Schwab  ---
It is generally assumed that powerpc64le-*-* implies POWER7+ (glibc even
requires POWER8+).  This is independent of the older -mlittle support (which
doesn't have a separate config triple).

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread meissner at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #6 from Michael Meissner  ---
Of course it would also apply if you are building a BE compiler that has little
endian multilibs, you would run into the same situation.

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread meissner at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #5 from Michael Meissner  ---
And libstdc++-v3 errors are similar:

mkdir -p ./powerpc64le-unknown-linux-gnu/bits/stdc++.h.gch
/home/meissner/fsf-build-ppc64le/work171-p5/./gcc/xgcc -shared-libgcc
-B/home/meissner/fsf-build-ppc64le/work171-p5/./gcc -nostdinc++
-L/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/src
-L/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/bin/
-B/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/lib/
-isystem
/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/include
-isystem
/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/sys-include
   -x c++-header -nostdinc++ -g -O2 -D_GNU_SOURCE 
-I/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I/home/meissner/fsf-src/work171/libstdc++-v3/libsupc++  -O2 -g
/home/meissner/fsf-src/work171/libstdc++-v3/include/precompiled/stdc++.h -o
powerpc64le-unknown-linux-gnu/bits/stdc++.h.gch/O2g.gch
In file included from
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:63,
 from
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/algorithm:60,
 from
/home/meissner/fsf-src/work171/libstdc++-v3/include/precompiled/stdc++.h:51:
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:224:38:
error: ‘__ieee128’ was not declared in this scope; did you mean ‘__int128’?
  224 | struct __numeric_traits_floating<__ieee128>
  |  ^
  |  __int128
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:224:47:
error: template argument 1 is invalid
  224 | struct __numeric_traits_floating<__ieee128>
  |   ^
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:232:29:
error: ‘__ieee128’ was not declared in this scope; did you mean ‘__int128’?
  232 | struct __numeric_traits<__ieee128>
  | ^
  | __int128
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:232:38:
error: template argument 1 is invalid
  232 | struct __numeric_traits<__ieee128>
  |  ^
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:233:40:
error: ‘__ieee128’ was not declared in this scope; did you mean ‘__int128’?
  233 | : public __numeric_traits_floating<__ieee128>
  |^
  |__int128
/home/meissner/fsf-build-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/ext/numeric_traits.h:233:49:
error: template argument 1 is invalid
  233 | : public __numeric_traits_floating<__ieee128>
  | ^

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread meissner at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #4 from Michael Meissner  ---
Libgfortran gives various errors that _Float128 is not supported on this
target.

libtool: compile:  /home/meissner/fsf-build-ppc64le/work171-p5/./gcc/xgcc
-B/home/meissner/fsf-build-ppc64le/work171-p5/./gcc/
-B/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/bin/
-B/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/lib/
-isystem /home/meissner/fsf-ins
tall-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/include -isystem
/home/meissner/fsf-install-ppc64le/work171-p5/powerpc64le-unknown-linux-gnu/sys-include
-DHAVE_CONFIG_H -I. -I/home/meissner/fsf-src/work171/libgfortran
-iquote/home/meissner/fsf-src/work171/libgfortran/io
-I/home/meissner/fsf-src/work171/libgfortran/..
/gcc -I/home/meissner/fsf-src/work171/libgfortran/../gcc/config -I../.././gcc
-I/home/meissner/fsf-src/work171/libgfortran/../libgcc -I../libgcc
-I/home/meissner/fsf-src/work171/libgfortran/../libbacktrace -I../libbacktrace
-I../libbacktrace -std=gnu11 -Wall -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition -
Wextra -Wwrite-strings -Werror=implicit-function-declaration -Werror=vla
-mabi=ibmlongdouble -mno-gnu-attribute -fcx-fortran-rules -ffunction-sections
-fdata-sections -g -O2 -MT caf/single.lo -MD -MP -MF caf/.deps/single.Tpo -c
/home/meissner/fsf-src/work171/libgfortran/caf/single.c  -fPIC -DPIC -o
caf/.libs/single.o
In file included from ./kinds.h:69,
 from
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:263,
 from
/home/meissner/fsf-src/work171/libgfortran/caf/libcaf.h:32,
 from
/home/meissner/fsf-src/work171/libgfortran/caf/single.c:26:
/home/meissner/fsf-src/work171/libgfortran/kinds-override.h:34:9: error:
‘_Float128’ is not supported on this target
   34 | typedef _Float128 GFC_REAL_17;
  | ^
/home/meissner/fsf-src/work171/libgfortran/kinds-override.h:35:18: error:
‘_Float128’ is not supported on this target
   35 | typedef _Complex _Float128 GFC_COMPLEX_17;
  |  ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1963:8: error:
‘_Float128’ is not supported on this target
 1963 | extern _Float128 __acoshieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1963:34: error:
‘_Float128’ is not supported on this target
 1963 | extern _Float128 __acoshieee128 (_Float128)
  |  ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1965:8: error:
‘_Float128’ is not supported on this target
 1965 | extern _Float128 __acosieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1965:33: error:
‘_Float128’ is not supported on this target
 1965 | extern _Float128 __acosieee128 (_Float128)
  | ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1967:8: error:
‘_Float128’ is not supported on this target
 1967 | extern _Float128 __asinhieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1967:34: error:
‘_Float128’ is not supported on this target
 1967 | extern _Float128 __asinhieee128 (_Float128)
  |  ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1969:8: error:
‘_Float128’ is not supported on this target
 1969 | extern _Float128 __asinieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1969:33: error:
‘_Float128’ is not supported on this target
 1969 | extern _Float128 __asinieee128 (_Float128)
  | ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1971:8: error:
‘_Float128’ is not supported on this target
 1971 | extern _Float128 __atan2ieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1971:34: error:
‘_Float128’ is not supported on this target
 1971 | extern _Float128 __atan2ieee128 (_Float128)
  |  ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1973:8: error:
‘_Float128’ is not supported on this target
 1973 | extern _Float128 __atanhieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1973:34: error:
‘_Float128’ is not supported on this target
 1973 | extern _Float128 __atanhieee128 (_Float128)
  |  ^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1975:8: error:
‘_Float128’ is not supported on this target
 1975 | extern _Float128 __atanieee128 (_Float128)
  |^
/home/meissner/fsf-src/work171/libgfortran/libgfortran.h:1975:33: error:
‘_Float128’ is not supported on this target
 1975 | extern _Float128 __atanieee128 (_Float128)
  |   

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #3 from Segher Boessenkool  ---
Note that we *should* support ieee128 with *any* configuration, to avoid
nonsense
like this (and many more).  But, alas.

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #2 from Segher Boessenkool  ---
(In reply to Segher Boessenkool from comment #1)
> "If you build a little-endian compiler".  What does that mean?  A
> cpu=powerpc76le* compiler?  Or something else?
> 
> Note that *any* compiler can be used as little-endian, by just using
> -mlittle.
> Nothing more, nothing less.  It should work no matter what is the default.

powerpc64le-* of course, I cannot type.

[Bug target/115800] PowerPC GCC cannot build a little endian compile if --with-cpu=power5 is used

2024-07-05 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115800

--- Comment #1 from Segher Boessenkool  ---
"If you build a little-endian compiler".  What does that mean?  A
cpu=powerpc76le* compiler?  Or something else?

Note that *any* compiler can be used as little-endian, by just using -mlittle.
Nothing more, nothing less.  It should work no matter what is the default.