On Fri, Oct 7, 2022 at 12:51 PM Franz Sirl <franz.sirl-ker...@lauterbach.com> wrote: > > Am 2022-09-25 um 18:28 schrieb Jeff Law: > > This is a minor improvement for the core_list_find routine in coremark. > > > > > > Basically for riscv, and likely other targets, we can end up with an > > unconditional jump to a return statement. This is a result of > > compensation code created by bb-reorder, and no jump optimization pass > > runs after bb-reorder to clean this stuff up. > > > > This patch utilizes preexisting code to identify suitable branch targets > > as well as preexisting code to emit a suitable return, so it's pretty > > simple. Note that when we arrange to do this optimization, the original > > return block may become unreachable. So we conditionally call > > delete_unreachable_blocks to fix that up. > > > > This triggers ~160 times during an x86_64 bootstrap. Naturally it > > bootstraps and regression tests on x86_64. > > > > I've also bootstrapped this on riscv64, regression testing with qemu > > shows some regressions, but AFAICT they're actually qemu bugs with > > signal handling/delivery -- qemu user mode emulation is not consistently > > calling user defined signal handlers. Given the same binary, sometimes > > they'll get called and the test passes, other times the handler isn't > > called and the test (of course) fails. I'll probably spend some time to > > try and chase this down for the sake of making testing easier. > > > > > > OK for the trunk? > > Hello Jeff, > > I've bisected this change to break a "profiledbootstrap" on x86_64 like > that:
Can you open a bugreport please? > make[3]: Entering directory > '/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/gcc' > /home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/./prev-gcc/xg++ > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/./prev-gcc/ > -B/usr/x86_64-suse-linux/ > bin/ -nostdinc++ > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs > -B/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64 > -suse-linux/prev-x86_64-suse-linux/libstdc++-v3/libsupc++/.libs > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include/x86_64-suse-linu > x > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/include > > -I/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/libstdc++-v3/libsupc++ > -L > /home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x86_64-suse-linux/libstdc++-v3/src/.libs > -L/home/fsirl/rpmbuild/BUILD/gcc-13.0.0+gitr13+2871/obj-x86_64-suse-linux/prev-x8 > 6_64-suse-linux/libstdc++-v3/libsupc++/.libs -fno-PIE -c -O2 -g > -fmessage-length=0 -D_FORTIFY_SOURCE=2 -funwind-tables > -fasynchronous-unwind-tables -U_FORTIFY_SOURCE -fprofile-use > -fprofile-reprod > ucible=parallel-runs -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 -fno-common > -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include > -I../../gcc/../libcpp/include -I../../gcc/../libcody > -I../../gcc/../libdecnumber -I../../gcc/../libdecnumber/bid > -I../libdecnumber -I../../gcc/../libbacktrace -o cgraph.o -MT cgraph.o > -MMD -MP -MF ./.deps/cgraph.TPo ../../gcc/cgraph.cc > ../../gcc/cgraph.cc: In member function 'cgraph_edge* > cgraph_edge::first_speculative_call_target()': > ../../gcc/cgraph.cc:1166:1: error: EDGE_CROSSING incorrectly set across > same section > 1166 | } > | ^ > ../../gcc/cgraph.cc:1166:1: error: No region crossing jump at section > boundary in bb 19 > during RTL pass: bbro > ../../gcc/cgraph.cc:1166:1: internal compiler error: verify_flow_info failed > 0xa7116e verify_flow_info() > ../../gcc/cfghooks.cc:284 > 0x1c64958 execute > ../../gcc/bb-reorder.cc:2663 > > In such a case, what do you need to reproduce it? I'm a mere user of the > Suse RPM builds here, no idea if profiling needs any extra data to > reproduce to bug. > > Franz. >