This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/55334] New: mgrid regression (ipa-cp disables vectorization)


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]