[Bug tree-optimization/91470] [10/11 Regression] bogus uninitialized warning in trans-intrinsic.c

2021-04-15 Thread msebor at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91470

Martin Sebor  changed:

   What|Removed |Added

  Known to fail||10.2.0, 11.0
   Last reconfirmed|2019-08-27 00:00:00 |2021-4-15
 CC||msebor at gcc dot gnu.org

--- Comment #5 from Martin Sebor  ---
Reconfirmed with GCC 11 and a reduced/corrected test case and slightly enhanced
output:

$ cat pr91470.c && gcc -O2 -S -Wall pr91470.c
int i1;

int* f1 (int);
void f2 (int, int);
void g2 (int, void *);

void f0 (void)
{
  int *p;

  for (int i = 0; i < 2; i++)
{
  f2 (0, 0);
  f2 (0, 0);
  f2 (0, 0);
  f2 (0, 0);
  g2 (i1, 0);

  if (i == 0)
p = f1 (0);
}

  g2 (i1, p);
}
void f0 ()
{
  int i;
  int * p;
  int i1.0_1;
  int i1.1_2;
  int _6;

   [local count: 357878152]:

   [local count: 715863673]:
  # p_26 = PHI 
  # i_27 = PHI <_6(6), 0(2)>
  # .MEM_28 = PHI <.MEM_25(6), .MEM_10(D)(2)>
  # .MEM_12 = VDEF <.MEM_28>
  f2 (0, 0);
  # .MEM_13 = VDEF <.MEM_12>
  f2 (0, 0);
  # .MEM_14 = VDEF <.MEM_13>
  f2 (0, 0);
  # .MEM_15 = VDEF <.MEM_14>
  f2 (0, 0);
  # VUSE <.MEM_15>
  i1.0_1 = i1;
  # .MEM_16 = VDEF <.MEM_15>
  g2 (i1.0_1, 0B);
  _6 = i_27 + 1;
  if (_6 == 1)
goto ; [21.69%]
  else
goto ; [78.31%]

   [local count: 155270830]:
  # .MEM_17 = VDEF <.MEM_16>
  p_18 = f1 (0);
  goto ; [100.00%]

   [local count: 560592843]:
  if (_6 != 2)
goto ; [36.16%]
  else
goto ; [63.84%]

   [local count: 202714689]:

   [local count: 357985519]:
  # p_4 = PHI 
  # .MEM_25 = PHI <.MEM_16(8), .MEM_17(4)>
  goto ; [100.00%]

   [local count: 357878152]:
  # VUSE <.MEM_16>
  i1.1_2 = i1;
  # .MEM_11 = VDEF <.MEM_16>
  g2 (i1.1_2, p_26); [tail call]
  # VUSE <.MEM_11>
  return;

}

pr91470.c: In function ‘f0’:
pr91470.c:23:3: warning: ‘p’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
   23 |   g2 (i1, p);
  |   ^~
pr91470.c:9:8: note: used when ‘i + 1 != 1 && i + 1 != 2 || i + 1 != 1 && i + 1
== 2’
9 |   int *p;
  |^
pr91470.c:9:8: note: ‘p’ was declared here

[Bug tree-optimization/91470] [10/11 Regression] bogus uninitialized warning in trans-intrinsic.c

2021-01-14 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91470

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P2