From b04093adb28bd6ee8b0390e840219fd2bba134db Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Fri, 9 Apr 2021 11:40:48 -0600 Subject: 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. --- gcc/testsuite/g++.dg/warn/uninit-pr55288.C | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 gcc/testsuite/g++.dg/warn/uninit-pr55288.C (limited to 'gcc') 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 0000000..12fbc56 --- /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; +} -- cgit v1.1