/* Verify that -Wstringop-overflow uses context-sensitive range info even at -O0. { dg-do compile } { dg-options "-O0 -Wall" } */ extern void* memset (void*, int, __SIZE_TYPE__); char a[8]; void warn_offset_range (int i) { if (i < 4) i = 4; memset (a + i, 0, 5); // { dg-warning "writing 5 bytes into a region of size 4 " } } void warn_size_range (int i, int n) { if (n < 5) n = 5; memset (a + 4, 1, n); // { dg-warning "writing between 5 and \\d+ bytes into a region of size 4 " } } void warn_offset_and_size_range (int i, int n) { if (n < 5) n = 5; if (i < 4) { if (n < 9) n = 9; memset (a + i, 1, n); // { dg-warning "writing between 9 and \\d+ bytes into a region of size 8 " } } else memset (a + i, 0, n); // { dg-warning "writing between 5 and \\d+ bytes into a region of size 4 " } }