]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR tree-optimization/61112 - repeated conditional triggers false positive -Wmaybe...
authorMartin Sebor <msebor@redhat.com>
Mon, 29 Mar 2021 19:52:53 +0000 (13:52 -0600)
committerMartin Sebor <msebor@redhat.com>
Mon, 29 Mar 2021 19:52:53 +0000 (13:52 -0600)
gcc/testsuite/ChangeLog:
PR tree-optimization/61112
* gcc.dg/uninit-pr61112.c: New test.

gcc/testsuite/gcc.dg/uninit-pr61112.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.dg/uninit-pr61112.c b/gcc/testsuite/gcc.dg/uninit-pr61112.c
new file mode 100644 (file)
index 0000000..1dbf756
--- /dev/null
@@ -0,0 +1,89 @@
+/* PR tree-optimization/61112 - repeated conditional triggers false-positive
+   -Wmaybe-uninitialized warning
+   { dg-do compile }
+   { dg-options "-O2 -Wall" } */
+
+int p;
+
+void foo_c0 (int x, int y, int z)
+{
+  int w;
+  if (x)
+    w = z;
+  if (y)
+    w = __LINE__;
+
+  if (x || y)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" }
+}
+
+
+void foo_c5_1_1 (int x, int y, int z, int a)
+{
+  int w;
+  if (x)
+    w = z;
+  if (y)
+    w = __LINE__;
+  if (a)
+    w = __LINE__;
+
+  if (x || y || a)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" "pr61112" { xfail *-*-* } }
+}
+
+void foo_c5_1_2 (int x, int y, int z, int a)
+{
+  int w;
+  if (x)
+    w = z;
+  if (y)
+    w = __LINE__;
+  if (a)
+    w = __LINE__;
+
+  if (x || a || y)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" "pr61112" { xfail *-*-* } }
+}
+
+void foo_c5_1_3 (int x, int y, int z, int a)
+{
+  int w;
+  if (x)
+    w = z;
+  if (y)
+    w = __LINE__;
+  if (a)
+    w = __LINE__;
+
+  if (a || x || y)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" "pr61112" { xfail *-*-* } }
+}
+
+void foo_c5_2 (int x, int y, int z, int a)
+{
+  int w;
+  if (x)
+    w = __LINE__;
+  if (y)
+    w = z;
+  if (a)
+    w = __LINE__;
+
+  if (x || y || a)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" }
+}
+
+void foo_c5_3 (int x, int y, int z, int a)
+{
+  int w;
+  if (x)
+    w = __LINE__;
+  if (y)
+    w = __LINE__;
+  if (a)
+    w = z;
+
+  if (x || y || a)
+    p = w;          // { dg-bogus "-Wmaybe-uninitialized" }
+}