aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2021-07-06 15:58:02 -0600
committerMartin Sebor <msebor@redhat.com>2021-07-06 15:58:02 -0600
commite8db5f70f27b6de8139339ef1866eaa153c2bf67 (patch)
tree8702323569dacc8accb6502e9a3c7ca2f7ff525c
parentee9a0e93156ff3d41450db74172abc8ae2471d1f (diff)
downloadgcc-e8db5f70f27b6de8139339ef1866eaa153c2bf67.zip
gcc-e8db5f70f27b6de8139339ef1866eaa153c2bf67.tar.gz
gcc-e8db5f70f27b6de8139339ef1866eaa153c2bf67.tar.bz2
Add test for [PR55881].
PR c++/55881 gcc/testsuite/ChangeLog: * g++.dg/warn/uninit-pr55881.C: New test.
-rw-r--r--gcc/testsuite/g++.dg/warn/uninit-pr55881.C34
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr55881.C b/gcc/testsuite/g++.dg/warn/uninit-pr55881.C
new file mode 100644
index 0000000..b01f4e7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr55881.C
@@ -0,0 +1,34 @@
+/* PR middle-end/55881 - #pragma GCC diagnostic ignored ignored when inlining
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+struct I
+{
+ int i;
+ int foo (struct I *n)
+ {
+ return n->i + 10; // { dg-bogus "-Wmaybe-uninitialized" }
+ }
+
+ I () : i (5) {}
+};
+
+int main (int argc, char **)
+{
+ struct I i, *n;
+
+ if (argc > 10)
+ {
+ n = new I;
+ i.i = i.foo (n);
+ }
+
+ if (argc > 2)
+ {
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+ return i.foo (n);
+#pragma GCC diagnostic pop
+ }
+
+ return 0;
+}