]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Create a variant of uninit-pred-7_a.c [PR123377]
authorAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Sat, 3 Jan 2026 05:25:12 +0000 (21:25 -0800)
committerAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Sun, 4 Jan 2026 18:18:57 +0000 (10:18 -0800)
So it turns out the xfail uninit-pred-7_a.c didn't always happen
depending on the setting of logical-op-non-short-circuit.
So this creates a second copy of the testcase for the case
of `logical-op-non-short-circuit=0` without the xfail and then sets
`logical-op-non-short-circuit=1` for uninit-pred-7_a.c with still
the xfail.

Tested on x86_64-linux-gnu to make sure both pass and uninit-pred-7_a.c
xfails like it should. Also tested manually on powerpc64-linux-gnu to
see the bogus warning happen with logical-op-non-short-circuit=1.

PR testsuite/123377
gcc/testsuite/ChangeLog:

* gcc.dg/uninit-pred-7_a.c: Add
`--param logical-op-non-short-circuit=1` to the options.
* gcc.dg/uninit-pred-7_a_a.c: New test.

Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
gcc/testsuite/gcc.dg/uninit-pred-7_a.c
gcc/testsuite/gcc.dg/uninit-pred-7_a_a.c [new file with mode: 0644]

index 7aaadf7def752c0c503e8e0142fac59e37b41d4f..5dd92176c8f6346efd499fc07e70eb6836aec7f8 100644 (file)
@@ -1,6 +1,5 @@
-
 /* { dg-do compile } */
-/* { dg-options "-Wuninitialized -O2" } */
+/* { dg-options "-Wuninitialized -O2 --param logical-op-non-short-circuit=1" } */
 
 int g;
 void bar();
diff --git a/gcc/testsuite/gcc.dg/uninit-pred-7_a_a.c b/gcc/testsuite/gcc.dg/uninit-pred-7_a_a.c
new file mode 100644 (file)
index 0000000..223f674
--- /dev/null
@@ -0,0 +1,53 @@
+/* { dg-do compile } */
+/* { dg-options "-Wuninitialized -O2 --param logical-op-non-short-circuit=0" } */
+
+int g;
+void bar();
+void blah(int);
+
+int foo (int n, int l, int m, int r)
+{
+  int v;
+
+  if (n || l)
+    v = r;
+
+  if (m) g++;
+  else   bar();
+
+  if ( n && l)
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+  if ( n )
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning"  } */
+
+  if ( l )
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+  return 0;
+}
+
+int foo_2 (int n, int l, int m, int r)
+{
+  int v;
+
+  if (n || l)
+    v = r;
+
+  if (m) g++;
+  else   bar();
+
+  if ( n && l)
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+  if ( n )
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+  if (m || l)
+      blah (v); /* { dg-warning "uninitialized" "warning" } */
+
+  if ( l )
+      blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
+
+  return 0;
+}