[Bug tree-optimization/68714] New: [6 Regression] less folding of vector comparison

glisse at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Dec 5 05:40:00 GMT 2015


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

            Bug ID: 68714
           Summary: [6 Regression] less folding of vector comparison
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: glisse at gcc dot gnu.org
  Target Milestone: ---

The change to use vec_cond_expr all over the place for vector comparisons
caused some regressions (that's obvious and normal). I just wanted to record
some random example here:

typedef int vec __attribute__((vector_size(16)));
vec f(vec x,vec y){
  return x<y|x==y;
}

used to give:

  _7 = x_1(D) <= y_2(D);
  return _7;

but is now:

  _3 = VEC_COND_EXPR <x_1(D) < y_2(D), { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>;
  _4 = VEC_COND_EXPR <x_1(D) == y_2(D), { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>;
  _5 = _3 | _4;
  return _5;

(ok, the asm is almost the same on x86 so the example may not be the best, but
it gives the idea)


More information about the Gcc-bugs mailing list