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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-03-26
           Keywords|                            |missed-optimization
            Version|unknown                     |11.0
          Component|ipa                         |tree-optimization
             Status|UNCONFIRMED                 |ASSIGNED
     Ever confirmed|0                           |1
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  At -O3 we're vectorizing the loop to

  _10 = (long unsigned int) &a[1];
  vect_cst__4 = {_10, _10};
  MEM <vector(2) long unsigned int> [(int * *)&c] = vect_cst__4;
  vectp_c.8_16 = &c + 16;
  ivtmp_19 = 1;
  b = 2;
  _3 = c[0];
  if (_3 == 0B)
    goto <bb 5>; [17.43%]
  else
    goto <bb 6>; [82.57%]

  <bb 5> [local count: 20586852]:
  foo ();

which FRE optimizes only to

  _10 = (long unsigned int) &a[1];
  vect_cst__4 = {_10, _10};
  MEM <vector(2) long unsigned int> [(int * *)&c] = vect_cst__4;
  b = 2;
  _11 = BIT_FIELD_REF <vect_cst__4, 64, 0>;
  if (_11 == 0B)

failing to resolve the bit-field-ref.  This looks like a missed match.pd
case.

Reply via email to