[Bug tree-optimization/91954] [10 Regression] gcc.dg/vect/pr66142.c should not need early inlining to be vectorized since r10-3311-gff6686d2e5f797d6

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Feb 7 12:01:00 GMT 2020


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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
GIMPLE testcase:

struct A { float x, y; };
struct B { struct A t; };

float __GIMPLE (ssa,startwith("fre"))
foo (float a, int i)
{
  struct B D_2220[32];
  float *_23;
  float _27;
  float _28;
  float _31;

  __BB(2):
  D_2220[i_14(D)].t.x = 1.0e+0f;
  D_2220[i_14(D)].t.y = a_11(D);
  _23 = &D_2220[i_14(D)];
  _27 = __MEM <const float> ((float *)_23);
  _28 = __MEM <const float> ((float *)_23 + _Literal (float *) 4);
  _31 = _27 + _28;
  return _31;
}

note the issue isn't only ref matching but alias disambiguation of
the second store against the first load.  For first load we don't
have an access path (VN has but it's representation is not the same
the alias oracle uses...).  Need to embrace a canonical decomposed
form in ao_ref maybe.


More information about the Gcc-bugs mailing list