From: Martin Sebor Date: Fri, 9 Apr 2021 17:40:48 +0000 (-0600) Subject: PR middle-end/55288 - Improve handling/suppression of maybe-uninitialized warnings X-Git-Tag: basepoints/gcc-12~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b04093adb28bd6ee8b0390e840219fd2bba134db;p=thirdparty%2Fgcc.git PR middle-end/55288 - Improve handling/suppression of maybe-uninitialized warnings gcc/testsuite/ChangeLog: PR middle-end/55288 * g++.dg/warn/uninit-pr55288.C: New test. --- diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr55288.C b/gcc/testsuite/g++.dg/warn/uninit-pr55288.C new file mode 100644 index 000000000000..12fbc56885e6 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/uninit-pr55288.C @@ -0,0 +1,43 @@ +/* PR tree-optimization/55288 - Improve handling/suppression of + maybe-uninitialized warnings + { dg-do compile } + { dg-options "-O2 -Wall" } */ + +struct iterator +{ + operator int (); + iterator operator++ (int); +}; + +void bar (int); + +static void foo (int x) +{ + bar (x); // { dg-bogus "uninitialized" } +} + +int baz (iterator j, iterator end, int p) +{ + bool valid = false; + int q; + for (; j != end; j++) { + if (p > j) { + if (not valid) + p = j; + break; + } + else if (p == j) { + valid = true; + q = -1; + } + else { + valid = true; + q = j; + } + } + + if (valid) + foo (q); + + return p; +}