diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.dg/warn/uninit-pr55288.C | 43 |
1 files changed, 43 insertions, 0 deletions
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; +} |