https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112598
--- Comment #11 from Robin Dapp <rdapp at gcc dot gnu.org> --- On Friday I looked into one of the Fortran fails, class_67.f90 and debugged it independently without reading here further. It is also due to the same reason - alias analysis finds that the predicated store destination cannot alias with the load destination and moves the load in front of the store. /* If the pointer based access is bigger than the variable they cannot alias. This is similar to the check below where we use TBAA to increase the size of the pointer based access based on the dynamic type of a containing object we can infer from it. */ poly_int64 dsize2; if (known_size_p (size1) && poly_int_tree_p (DECL_SIZE (base2), &dsize2) && known_lt (dsize2, size1)) return false; This is where alias analysis "fails". That looks like the exact same thing posted in the other thread, so thanks for finding that, Pan.