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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2026-08-19
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
So we have & reductions of overlapping operands.  I'll dig into it.  GIMPLE
testcase:

void foo(int);
int *c;
char d;
void __GIMPLE (ssa,guessed_local(63136016),startwith("slp"))
fn1 ()
{
  int * _1;
  int _2;
  char _9;
  int _12; 
  int _17; 
  int _32;
  unsigned int _33;
  int _35;
  int _36;
  unsigned int _37;
  unsigned int _38;
  int _39;
  unsigned int _47;
  int _48;
  int * _49;
  int * _54;
  int _55; 
  unsigned int _56;
  unsigned int _57;
  int _58; 
  int _59; 
  int * _70;
  int _71;
  unsigned int _72;
  unsigned int _73;
  int _74;
  int _75;
  int * _86;
  int _87;
  unsigned int _88;
  unsigned int _89;
  int _90;
  int _91;
  int * _102;
  int _103;
  unsigned int _104;
  unsigned int _105;
  int _106;
  int _107;
  int * _118;
  int _119;
  unsigned int _120;
  unsigned int _121;
  int _122;
  int _123;
  unsigned int _136;
  unsigned int _137;
  int _138;
  int _139;
  unsigned int _152;
  unsigned int _153;
  int _154;
  int _155;
  int _171;
  int _187;
  int _203;
  int _219;
  int _235;
  int _251;

  __BB(2,guessed_local(63136016)):
  _1 = c;
  _2 = __MEM <int> (_1 + _Literal (int *) 56);
  foo (_2);
  _39 = __MEM <int> (_1);
  _38 = (unsigned int) _39;
  _37 = _38 % 3u;
  _36 = (int) _37;
  _35 = _36 & _39;
  __MEM <int> (_1) = _35;
  _49 = _1 + 8ul;
  _48 = __MEM <int> (_49);
  _47 = (unsigned int) _48;
  _33 = _47 % 3u;
  _32 = (int) _33;
  _17 = _32 & _35;
  __MEM <int> (_1) = _17;
  _54 = _1 + 16ul;
  _55 = __MEM <int> (_54);
  _56 = (unsigned int) _55;
  _57 = _56 % 3u;
  _58 = (int) _57;
  _59 = _17 & _58;
  __MEM <int> (_1) = _59;
  _70 = _1 + 24ul;
  _71 = __MEM <int> (_70);
  _72 = (unsigned int) _71;
  _73 = _72 % 3u;
  _74 = (int) _73;
  _75 = _59 & _74;
  __MEM <int> (_1) = _75;
  _86 = _1 + 32ul;
  _87 = __MEM <int> (_86);
  _88 = (unsigned int) _87;
  _89 = _88 % 3u;
  _90 = (int) _89;
  _91 = _75 & _90;
  __MEM <int> (_1) = _91;
  _102 = _1 + 40ul;
  _103 = __MEM <int> (_102);
  _104 = (unsigned int) _103;
  _105 = _104 % 3u;
  _106 = (int) _105;
  _107 = _91 & _106;
  __MEM <int> (_1) = _107;
  _118 = _1 + 48ul;
  _119 = __MEM <int> (_118);
  _120 = (unsigned int) _119;
  _121 = _120 % 3u;
  _122 = (int) _121;
  _123 = _107 & _122;
  _136 = (unsigned int) _2;
  _137 = _136 % 3u;
  _138 = (int) _137;
  _139 = _123 & _138;
  _152 = (unsigned int) _139;
  _153 = _152 % 3u;
  _154 = (int) _153;
  _155 = _139 & _154;
  _171 = _32 & _155;
  _187 = _58 & _171;
  _203 = _74 & _187;
  _219 = _90 & _203;
  _235 = _106 & _219;
  _251 = _122 & _235;
  _12 = _138 & _251;
  __MEM <int> (_1) = _12;
  _9 = (char) _137;
  d = _9;
  return;

}

Reply via email to