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

--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Note that with -fno-analyzer-state-merge, -fanalyzer warns without optimization
and shows the conditionals you hoped to see:

./xgcc -B. -S -fanalyzer /tmp/foo.c -fno-analyzer-state-merge 
/tmp/foo.c: In function 'f':
/tmp/foo.c:9:11: warning: use of uninitialized value 'a[<unknown>]' [CWE-457]
[-Wanalyzer-use-of-uninitialized-value]
    9 |   return a[i + j];
      |          ~^~~~~~~
  'f': events 1-6
    |
    |    3 |   int a[3];
    |      |       ^
    |      |       |
    |      |       (1) region created on stack here
    |......
    |    7 |   if (i < 1) i = 1;
    |      |      ~       ~~~~~
    |      |      |         |
    |      |      |         (3) ...to here
    |      |      (2) following 'true' branch (when 'i <= 0')...
    |    8 |   if (j < 1) j = 1;
    |      |      ~       ~~~~~
    |      |      |         |
    |      |      |         (5) ...to here
    |      |      (4) following 'true' branch (when 'j <= 0')...
    |    9 |   return a[i + j];
    |      |          ~~~~~~~~
    |      |           |
    |      |           (6) use of uninitialized value 'a[<unknown>]' here
    |

Not sure why it's printing <unknown> for the index though.

Reply via email to