diff options
author | Martin Sebor <msebor@redhat.com> | 2021-05-13 16:05:50 -0600 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2021-05-13 16:06:51 -0600 |
commit | 2efe245bb88bf4574e322ef7e6d2df83d9e13237 (patch) | |
tree | a6d0bbec49a776bda1dfb729d6a6a2290a73e57a /gcc/testsuite/gcc.dg/uninit-pr93100.c | |
parent | ca9bb74a5f856ccdceb4797f18b0a4ac8f49d069 (diff) | |
download | gcc-2efe245bb88bf4574e322ef7e6d2df83d9e13237.zip gcc-2efe245bb88bf4574e322ef7e6d2df83d9e13237.tar.gz gcc-2efe245bb88bf4574e322ef7e6d2df83d9e13237.tar.bz2 |
Avoid -Wuninitialized false negatives with sanitization and VLAs.
Resolves:
PR tree-optimization/93100 - gcc -fsanitize=address inhibits -Wuninitialized
PR middle-end/98583 - missing -Wuninitialized reading from a second VLA in its own block
gcc/ChangeLog:
PR tree-optimization/93100
PR middle-end/98583
* tree-ssa-uninit.c (check_defs): Exclude intrinsic functions that
don't modify referenced objects.
gcc/testsuite/ChangeLog:
PR tree-optimization/93100
PR middle-end/98583
* g++.dg/warn/uninit-pr93100.C: New test.
* gcc.dg/uninit-pr93100.c: New test.
* gcc.dg/uninit-pr98583.c: New test.
Diffstat (limited to 'gcc/testsuite/gcc.dg/uninit-pr93100.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/uninit-pr93100.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/uninit-pr93100.c b/gcc/testsuite/gcc.dg/uninit-pr93100.c new file mode 100644 index 0000000..61b7e43 --- /dev/null +++ b/gcc/testsuite/gcc.dg/uninit-pr93100.c @@ -0,0 +1,74 @@ +/* PR tree-optimization/93100 - gcc -fsanitize=address inhibits -Wuninitialized + { dg-do compile } + { dg-options "-Wall -fsanitize=address" } */ + +struct A +{ + _Bool b; + int i; +}; + +void warn_A_b_O0 (void) +{ + struct A a; + + if (a.b) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} + +void warn_A_i_O0 (void) +{ + struct A a; + + if (a.i) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} + +#pragma GCC optimize ("1") + +void warn_A_b_O1 (void) +{ + struct A a; + + if (a.b) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} + +void warn_A_i_O1 (void) +{ + struct A a; + + if (a.i) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} + + +#pragma GCC optimize ("2") + +void warn_A_b_O2 (void) +{ + struct A a; + + if (a.b) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} + +void warn_A_i_O2 (void) +{ + struct A a; + + if (a.i) // { dg-warning "\\\[-Wuninitialized" } + { + (void)&a; + } +} |