https://gcc.gnu.org/g:bcde241ac56de6e168fc16f778be60ff13bbcbca
commit r16-6486-gbcde241ac56de6e168fc16f778be60ff13bbcbca Author: Andrew Pinski <[email protected]> Date: Fri Jan 2 21:25:12 2026 -0800 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 <[email protected]> Diff: --- gcc/testsuite/gcc.dg/uninit-pred-7_a.c | 3 +- gcc/testsuite/gcc.dg/uninit-pred-7_a_a.c | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.dg/uninit-pred-7_a.c b/gcc/testsuite/gcc.dg/uninit-pred-7_a.c index 7aaadf7def75..5dd92176c8f6 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 000000000000..223f6747610c --- /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; +}
