Created attachment 56944 [details] spnego_mech.so.i.xz ``` $ gcc -c spnego_mech.so.i -O3 -march=znver2 /var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/gssapi/spnego/spnego_mech.c: In function ‘spnego_gss_display_status’: /var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/gssapi/spnego/spnego_mech.c:1791:1: error: dominator of 18 should be 29, not 3 1791 | spnego_gss_display_status( | ^~~~~~~~~~~~~~~~~~~~~~~~~ during GIMPLE pass: vect /var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/gssapi/spnego/spnego_mech.c:1791:1: internal compiler error: in verify_dominators, at dominance.cc:1194 0x560e9cdce5ea verify_dominators(cdi_direction) /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/dominance.cc:1194 0x560e9dfd0199 checking_verify_dominators(cdi_direction) /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/dominance.h:76 0x560e9dfd0199 slpeel_tree_duplicate_loop_to_edge_cfg(loop*, edge_def*, loop*, edge_def*, edge_def*, edge_def**, bool, vec<basic_block_def*, va_heap, vl_ptr>*) /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vect-loop-manip.cc:1846 0x560e9dfd2b38 vect_do_peeling(_loop_vec_info*, tree_node*, tree_node*, tree_node**, tree_node**, tree_node**, int, bool, bool, tree_node**) /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vect-loop-manip.cc:3307 0x560e9dfc1dd7 vect_transform_loop(_loop_vec_info*, gimple*) /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vect-loop.cc:11911 0x560e9e00a2f2 vect_transform_loops /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vectorizer.cc:1006 0x560e9e00a956 try_vectorize_loop_1 /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vectorizer.cc:1152 0x560e9e00a956 try_vectorize_loop /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vectorizer.cc:1182 0x560e9e00af74 execute /usr/src/debug/sys-devel/gcc-14.0.0.9999/gcc-14.0.0.9999/gcc/tree-vectorizer.cc:1298 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://bugs.gentoo.org/> for instructions. ``` ``` Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/14/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-14.0.0.9999/work/gcc-14.0.0.9999/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/14 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/14/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/14 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/14/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/14/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14 --disable-silent-rules --disable-dependency-tracking --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/14/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=yes,extra,rtl,df --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 14.0.0 p, commit 2250dc0cc8c46999ad1c1d79b9aeed9056459bb6' --with-gcc-major-version-only --enable-libstdcxx-time --enable-lto --disable-libstdcxx-pch --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-cet --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --with-zstd --without-isl --enable-default-pie --enable-host-pie --disable-host-bind-now --enable-default-ssp Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 14.0.0 20231225 (experimental) 0beeddd6b1b1cb41104c4df925323e8fc0437ba8 (Gentoo 14.0.0 p, commit 2250dc0cc8c46999ad1c1d79b9aeed9056459bb6) ```
Created attachment 56945 [details] reduced.i
This has been introduced with r14-6822-g01f4251b8775c8 (middle-end: Support vectorization of loops with multiple exits). I have reduced another testcase from 526.blender_r, which however requires -Ofast -march=x86-64-v3 -fprofile-generate so the original is probably better: void *check_for_dupid_lb_0; char check_for_dupid_name; int check_for_dupid_nr; void BLI_split_name_num(); char check_for_dupid() { int a; while (1) { for (; check_for_dupid_lb_0;) BLI_split_name_num(); a = 0; for (; a < 64; a++) if (a >= check_for_dupid_nr) break; if (a && check_for_dupid_name) return 1; } }
Oh I had missed this one, both those cases already fixed in one of the submitted patches. I think 113144 so I'll mark it as a dup. With the submitted patches both vectorize correctly. *** This bug has been marked as a duplicate of bug 113144 ***
The master branch has been updated by Tamar Christina <tnfchris@gcc.gnu.org>: https://gcc.gnu.org/g:9e7c77c7933b1bb0dd07214333e52a9a896fa349 commit r14-7101-g9e7c77c7933b1bb0dd07214333e52a9a896fa349 Author: Tamar Christina <tamar.christina@arm.com> Date: Wed Jan 10 12:51:54 2024 +0000 middle-end: Fix dominators updates when peeling with multiple exits [PR113144] When we peel at_exit we are moving the new loop at the exit of the previous loop. This means that the blocks outside the loop dat the previous loop used to dominate are no longer being dominated by it. The new dominators however are hard to predict since if the loop has multiple exits and all the exits are an "early" one then we always execute the scalar loop. In this case the scalar loop can completely dominate the new loop. If we later have skip_vector then there's an additional skip edge added that might change the dominators. The previous patch would force an update of all blocks reachable from the new exits. This one updates *only* blocks that we know the scalar exits dominated. For the examples this reduces the blocks to update from 18 to 3. gcc/ChangeLog: PR tree-optimization/113144 PR tree-optimization/113145 * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Update all BB that the original exits dominated. gcc/testsuite/ChangeLog: PR tree-optimization/113144 PR tree-optimization/113145 * gcc.dg/vect/vect-early-break_94-pr113144.c: New test.