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/59642] [5/6 Regression] Performance regression with -ftree-loop-distribute-patterns


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59642

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-04-04
      Known to work|                            |4.7.3, 7.0.1
   Target Milestone|---                         |5.5
            Summary|Performance regression      |[5/6 Regression]
                   |(4.7/4.8) with              |Performance regression with
                   |-ftree-loop-distribute-patt |-ftree-loop-distribute-patt
                   |erns                        |erns
     Ever confirmed|0                           |1
      Known to fail|                            |5.4.0, 6.3.0

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
We now unroll early enough to not regress compared to 4.8 anymore.  Some niter
analysis improvements make us unroll in cunrolli pass.

Note that if you adjust the testcase to make sure we don't unroll code with
loop distribution is better:

void foo(int *v)
{
  int *p;

  for(p = v; p < v + 18; ++p) *p = 0;

  for(p = v; p < v + 18; ++p)
    if(*p) *p = 1;
}

still we don't optimize the 2nd loop in GCC for the following testcase

void foo(int *v, int n)
{
  int *p;

  __builtin_memset (v, 0, n * sizeof (int));

  for(p = v; p < v + n; ++p)
    if(*p) *p = 1;
}

because value-numbering isn't clever enough here (constant 'n' would be
moderately easier to handle).

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