Test to verify -Wformat-overflow uses context-sensitive ranges.
gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/builtin-sprintf-warn-28.c: New test.
This commit is contained in:
parent
d82a54f564
commit
1e6294bb15
1 changed files with 21 additions and 0 deletions
21
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c
Normal file
21
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-28.c
Normal file
|
@ -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" }
|
||||
}
|
Loading…
Add table
Reference in a new issue