[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