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.