Hi Richi, > On 29 Jul 2022, at 09:54, Richard Biener via Gcc-patches > <gcc-patches@gcc.gnu.org> wrote: > > The following makes the backward threader reject threads whose entry > edge is probably never executed according to the profile. That in > particular, for the testcase, avoids threading the irq == 1 check > on the path where irq > 31, thereby avoiding spurious -Warray-bounds > diagnostics
This breaks bootstrap on i686-darwin{9,17} with what looks like a valid warning (werrors on stage2) cc1plus … -O2 -Wall … is enough to. I can repeat it on a cross from x86_64-darwin19, so I can probably reduce the .ii (it’s like 2M5 raw) and file a PR if you like - depends if the solution might be obvious to you … thanks Iain -------- In file included from /src-local/gcc-master/gcc/hash-table.h:248, from /src-local/gcc-master/gcc/coretypes.h:486, from /src-local/gcc-master/gcc/tree-ssa-threadbackward.cc:22: In member function ‘T& vec<T, A, vl_embed>::operator[](unsigned int) [with T = basic_block_def*; A = va_heap]’, inlined from ‘const T& vec<T>::operator[](unsigned int) const [with T = basic_block_def*]’ at /src-local/gcc-master/gcc/vec.h:1486:20, inlined from ‘bool back_threader_profitability::profitable_path_p(const vec<basic_block_def*>&, tree, edge, bool*)’ at /src-local/gcc-master/gcc/tree-ssa-threadbackward.cc:781:37: /src-local/gcc-master/gcc/vec.h:890:19: warning: array subscript 4294967294 is above array bounds of ‘basic_block_def* [1]’ [-Warray-bounds] 890 | return m_vecdata[ix]; | ~~~~~~~~~^ /src-local/gcc-master/gcc/vec.h: In member function ‘bool back_threader_profitability::profitable_path_p(const vec<basic_block_def*>&, tree, edge, bool*)’: /src-local/gcc-master/gcc/vec.h:635:5: note: while referencing ‘vec<basic_block_def*, va_heap, vl_embed>::m_vecdata’ 635 | T m_vecdata[1]; | ^~~~~~~~~ =====