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

--- Comment #19 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Looks like -fbranch-probabilities is causing the issue.
It it gcc.o that gets miscompiled.

The following works (adding -fno-branch-probabilities):

trippels@gcc2-power8 gcc % /home/trippels/gcc_build_dir_/./prev-gcc/xg++
-B/home/trippels/gcc_build_dir_/./prev-gcc/
-B/usr/local/powerpc64le-unknown-linux-gnu/bin/ -nostdinc++
-B/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-I/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I/home/trippels/gcc/libstdc++-v3/libsupc++
-L/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-fno-PIE -c -DSTANDARD_STARTFILE_PREFIX=\"../../../\"
-DSTANDARD_EXEC_PREFIX=\"/usr/local/lib/gcc/\"
-DSTANDARD_LIBEXEC_PREFIX=\"/usr/local/libexec/gcc/\"
-DDEFAULT_TARGET_VERSION=\"6.0.0\"
-DDEFAULT_REAL_TARGET_MACHINE=\"powerpc64le-unknown-linux-gnu\"
-DDEFAULT_TARGET_MACHINE=\"powerpc64le-unknown-linux-gnu\"
-DSTANDARD_BINDIR_PREFIX=\"/usr/local/bin/\"
-DTOOLDIR_BASE_PREFIX=\"../../../../\" -DACCEL_DIR_SUFFIX=\"\"
-DENABLE_SHARED_LIBGCC -DCONFIGURE_SPECS="\"\"" -O3 -g -flto=jobserver
-frandom-seed=1 -fprofile-use -fno-branch-probabilities -DIN_GCC
-fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing
-Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual
-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings
-DHAVE_CONFIG_H -I. -I. -I../../gcc/gcc -I../../gcc/gcc/.
-I../../gcc/gcc/../include -I../../gcc/gcc/../libcpp/include
-I../../gcc/gcc/../libdecnumber -I../../gcc/gcc/../libdecnumber/dpd
-I../libdecnumber -I../../gcc/gcc/../libbacktrace -o gcc.o -MT gcc.o -MMD -MP
-MF ./.deps/gcc.TPo ../../gcc/gcc/gcc.c 

trippels@gcc2-power8 gcc % /home/trippels/gcc_build_dir_/./prev-gcc/xg++
-B/home/trippels/gcc_build_dir_/./prev-gcc/
-B/usr/local/powerpc64le-unknown-linux-gnu/bin/ -nostdinc++
-B/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-I/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu
-I/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/include
-I/home/trippels/gcc/libstdc++-v3/libsupc++
-L/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/trippels/gcc_build_dir_/prev-powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-no-pie -O3 -g -flto=32 -frandom-seed=1 -fprofile-use -DIN_GCC -fno-exceptions
-fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H
-static-libstdc++ -static-libgcc -o xgcc gcc.o gcc-main.o ggc-none.o
c/gccspec.o driver-rs6000.o libcommon-target.a libcommon.a ../libcpp/libcpp.a
../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a
../libdecnumber/libdecnumber.a
/usr/include/sys/resource.h:50:12: warning: type of ‘getrlimit’ does not match
original declaration [-Wlto-type-mismatch]
 extern int getrlimit (__rlimit_resource_t __resource,
            ^
/usr/include/sys/resource.h:50:12: note: type mismatch in parameter 1
 extern int getrlimit (__rlimit_resource_t __resource,
            ^
/usr/include/sys/resource.h:42:13: note: type ‘__rlimit_resource_t’ should
match type ‘__rlimit_resource_t’
 typedef int __rlimit_resource_t;
             ^
/usr/include/sys/resource.h:38:32: note: the incompatible type is defined here
 typedef enum __rlimit_resource __rlimit_resource_t;
                                ^
/usr/include/sys/resource.h:50:12: note: ‘getrlimit’ was previously declared
here
 extern int getrlimit (__rlimit_resource_t __resource,
            ^
/usr/include/sys/resource.h:69:12: warning: type of ‘setrlimit’ does not match
original declaration [-Wlto-type-mismatch]
 extern int setrlimit (__rlimit_resource_t __resource,
            ^
/usr/include/sys/resource.h:69:12: note: type mismatch in parameter 1
 extern int setrlimit (__rlimit_resource_t __resource,
            ^
/usr/include/sys/resource.h:42:13: note: type ‘__rlimit_resource_t’ should
match type ‘__rlimit_resource_t’
 typedef int __rlimit_resource_t;
             ^
/usr/include/sys/resource.h:38:32: note: the incompatible type is defined here
 typedef enum __rlimit_resource __rlimit_resource_t;
                                ^
/usr/include/sys/resource.h:69:12: note: ‘setrlimit’ was previously declared
here
 extern int setrlimit (__rlimit_resource_t __resource,
            ^

trippels@gcc2-power8 gcc % /home/trippels/gcc_build_dir_/./gcc/xgcc --version
xgcc (GCC) 6.0.0 20150712 (experimental)

Reply via email to