http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55334
Bug #: 55334 Summary: mgrid regression (ipa-cp disables vectorization) Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: hubi...@gcc.gnu.org mgrid has regressed noticeably http://gcc.opensuse.org/SPEC/CFP/sb-frescobaldi.suse.de-head-64/172_mgrid_big.png This seems to be related to function resid_ that we now clone Creating a specialized node of resid/1. replacing param u with const &x.u replacing param v with const &x.v replacing param r with const &x.r replacing param a with const &x.a Both variants stays in the code. When compiling resid vectorizer succeeds. The difference seems to be: 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *v_41(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: *u_45(D) being changed to 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: misalign = 0 bytes of ref MEM[(real(kind=8)[4] *)&x + 58071104B][0] 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: misalign = 8 bytes of ref MEM[(real(kind=8)[4] *)&x + 58071104B][1] 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x 191: vect_compute_data_ref_alignment: 191: Unknown alignment for access: x that ultimately leads to 191: === vect_prune_runtime_alias_test_list === 191: disable versioning for alias - max number of generated checks exceeded. 191: too long list of versioning for alias run-time tests. So it seems that specializing for particular static array = good thing leads to vectorizer giving up.