[Abe wrote:]
Ideally, I/we fix the above problem -- and the rest of the regressions in the new if converter --
[Alan wrote:]
OK, what are these regressions?
Each of these files` test cases currently fails to be autovectorized: gcc/testsuite/gcc.dg/vect/pr61194.c gcc/testsuite/gcc.dg/vect/vect-mask-load-1.c gcc/testsuite/gcc.dg/vect/vect-mask-loadstore-1.c gcc/testsuite/gcc.target/i386/avx2-gather-6.c gcc/testsuite/gcc.target/i386/avx2-vect-aggressive-1.c gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c [Alan wrote:]
Well, any array access could introduce an extra fault (unless it's dominated by another equivalent (read/write) access)...?
I respectfully disagree. Given code such as this: for (unsigned short index = 1; index < 9; ++index) array[index] = index; ... and assuming that "array" is an _array_ variable, i.e. it is _not_ a [re-assignable] pointer, it should be clear IMO to all human readers that this code will not segfault, and if any compiler cannot also correctly arrive at the conclusion "this array access is always good", then that compiler needs to get better at analysis IMO. AFAIK, value range propagation [in the above example, for "index"] has been in GCC for many years... http://www.airs.com/dnovillo/Papers/gcc2005.pdf https://gcc.gnu.org/ml/gcc-patches/2000-07/msg00968.html http://gcc.1065356.n5.nabble.com/Value-range-propagation-pass-in-4-0-1-RC1-or-not-td660293.html [and I`m sure there are many more] Regards, Abe