This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/55334] New: mgrid regression (ipa-cp disables vectorization)
- From: "hubicka at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 15 Nov 2012 02:27:28 +0000
- Subject: [Bug tree-optimization/55334] New: mgrid regression (ipa-cp disables vectorization)
- Auto-submitted: auto-generated
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: unassigned@gcc.gnu.org
ReportedBy: hubicka@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.