[Bug tree-optimization/91470] [10/11 Regression] bogus uninitialized warning in trans-intrinsic.c
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Apr 16 00:06:20 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91470
Martin Sebor <msebor at gcc dot gnu.org> 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 <msebor at gcc dot gnu.org> ---
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;
<bb 2> [local count: 357878152]:
<bb 3> [local count: 715863673]:
# p_26 = PHI <p_4(6), p_9(D)(2)>
# 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 <bb 4>; [21.69%]
else
goto <bb 5>; [78.31%]
<bb 4> [local count: 155270830]:
# .MEM_17 = VDEF <.MEM_16>
p_18 = f1 (0);
goto <bb 6>; [100.00%]
<bb 5> [local count: 560592843]:
if (_6 != 2)
goto <bb 8>; [36.16%]
else
goto <bb 7>; [63.84%]
<bb 8> [local count: 202714689]:
<bb 6> [local count: 357985519]:
# p_4 = PHI <p_26(8), p_18(4)>
# .MEM_25 = PHI <.MEM_16(8), .MEM_17(4)>
goto <bb 3>; [100.00%]
<bb 7> [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
More information about the Gcc-bugs
mailing list