On Tue, Jan 3, 2017 at 7:19 PM, Jeff Law <l...@redhat.com> wrote: > On 01/02/2017 10:29 PM, Alexandre Oliva wrote: >> >> simplify_transformation_to_array had the nested loop unrolled 7 times, >> which is reasonable given that it iterates over arrays of size >> GFC_MAX_DIMENSIONS == 7. >> >> The problem is that the last iteration increments the index, tests >> that it's less than result->rank, and then accesses the arrays with >> the incremented index. >> >> We did not optimize out that part in the 7th iteration, so VRP flagged >> the unreachable code as accessing arrays past the end. >> >> It couldn't possibly know that we'd never reach that part, since the >> test was on result->rank, and it's not obvious (for the compiler) that >> result->rank <= GFC_MAX_DIMENSIONS. >> >> Even an assert to that effect before the enclosing loop didn't avoid >> the warning turned to error, though; I suppose there might be some >> aliasing at play, because moving the assert into the loop does, but >> then, it's not as efficient as testing the index itself against the >> limit. >> >> Regstrapped on x86_64-linux-gnu and i686-linux-gnu. OK to install? >> >> for gcc/fortran/ChangeLog >> >> * simplify.c (simplify_transformation_to_array): Assert the >> array access is in range. Fix whitespace.
But once we default to release checking it will warn again? That said, I think this kind of workaround is bad :/ Richard. > OK. > jeff >