| /* PR middle-end/100307 - spurious -Wplacement-new with negative pointer |
| offset |
| { dg-do compile } |
| { dg-options "-O0 -Wall" } */ |
| |
| extern int sprintf (char*, const char*, ...); |
| |
| char a[4]; |
| |
| void nowarn_1m1 () |
| { |
| char *p = a + 1; |
| sprintf (p - 1, "%i", 123); // { dg-bogus "-Wformat-overflow" } |
| } |
| |
| void nowarn_4m3 () |
| { |
| char *p = a + 4; |
| sprintf (p - 3, "%i", 12); // { dg-bogus "-Wformat-overflow" } |
| } |
| |
| void warn_2m1 () |
| { |
| char *p = a + 2; |
| sprintf (p - 1, "%i", 123); // { dg-warning "-Wformat-overflow" "pr100325" } |
| } |
| |
| void warn_3m1 () |
| { |
| char *p = a + 3; |
| sprintf (p - 1, "%i", 12); // { dg-warning "-Wformat-overflow" "pr100325" } |
| } |
| |
| void warn_4m1 () |
| { |
| char *p = a + 4; |
| sprintf (p - 1, "%i", 1); // { dg-warning "-Wformat-overflow" "pr100325" } |
| } |