From: Andrew Pinski Date: Sat, 3 Jan 2026 05:25:12 +0000 (-0800) Subject: testsuite: Create a variant of uninit-pred-7_a.c [PR123377] X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcde241ac56de6e168fc16f778be60ff13bbcbca;p=thirdparty%2Fgcc.git testsuite: Create a variant of uninit-pred-7_a.c [PR123377] 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 --- diff --git a/gcc/testsuite/gcc.dg/uninit-pred-7_a.c b/gcc/testsuite/gcc.dg/uninit-pred-7_a.c index 7aaadf7def7..5dd92176c8f 100644 --- a/gcc/testsuite/gcc.dg/uninit-pred-7_a.c +++ b/gcc/testsuite/gcc.dg/uninit-pred-7_a.c @@ -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 index 00000000000..223f6747610 --- /dev/null +++ b/gcc/testsuite/gcc.dg/uninit-pred-7_a_a.c @@ -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; +}