This happens in testcases gcc.dg/vect/no-scevccp-outer-6.c and gcc.dg/vect/vect-multitypes-6.c:
On the alias branch we can't tell that a read through a (restrict) pointer (which is a function argument) does not overlap with write to a local arrays. As a result we try to vectorize the loop using loop-versioning controled by a run-time aliasing test. In no-scevccp-outer-6.c this capability is not yet supported for outer-loops so we can't vectorize the outer-loop (the inner loop does get vectorized). In vect-multitypes-6.c there are too many runtime checks required, so we bail out: > " > === vect_prune_runtime_alias_test_list === > vect-multitypes-6.c:34: note: disable versioning for alias - max number of > generated checks exceeded. > vect-multitypes-6.c:34: note: too long list of versioning for alias > run-time tests. > " (with --param vect-max-version-for-alias-checks=20 we do vectorize the loop). -- Summary: [alias-improvements-branch] can't alias (restrict) function-pointer (read) and local array (write) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dorit at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37694