diff options
author | Martin Sebor <msebor@redhat.com> | 2022-01-14 09:59:53 -0700 |
---|---|---|
committer | Martin Sebor <msebor@redhat.com> | 2022-01-14 09:59:53 -0700 |
commit | 1e6294bb15d2169147c7838f89a9168980b94b47 (patch) | |
tree | 956dbff7068df422f4c92c1cbaf637f375873548 /gcc | |
parent | d82a54f5644ae3db546e596b7bc426c5cb00b7e1 (diff) | |
download | gcc-1e6294bb15d2169147c7838f89a9168980b94b47.zip gcc-1e6294bb15d2169147c7838f89a9168980b94b47.tar.gz gcc-1e6294bb15d2169147c7838f89a9168980b94b47.tar.bz2 |
Test to verify -Wformat-overflow uses context-sensitive ranges.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/builtin-sprintf-warn-28.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c new file mode 100644 index 0000000..d58d980 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c @@ -0,0 +1,21 @@ +/* Verify that -Wformat-overflow uses context-sensitive ranges even + at -O0 to avoid both false positives and negatives. + { dg-do compile } + { dg-options "-O0 -Wall" } */ + +extern int sprintf (char*, const char*, ...); + +extern char a[4]; + +void test_context_range (int c) +{ + int i = 998; + + /* Prior to the switch to Ranger in GCC 12 -Wformat-overflow triggers + for both calls because EVRP doesn't expose the accurate range of + the argument. */ + if (c) + sprintf (a, "%i", i + 2); // { dg-warning "writing a terminating nul past the end of the destination" } + else + sprintf (a, "%i", i + 1); // { dg-bogus "-Wformat-overflow" } +} |