| /* PR tree-optimization/97027 - missing warning on buffer overflow storing |
| a larger scalar into a smaller array |
| Verify overflow by vector stores. |
| { dg-do compile } |
| { dg-options "-O3" } */ |
| |
| void* nowarn_loop (void) |
| { |
| char *p = __builtin_malloc (16); |
| for (int i = 0; i != 16; ++i) |
| p[i] = i; |
| return p; |
| } |
| |
| void* warn_loop (void) |
| { |
| char *p = __builtin_malloc (15); |
| for (int i = 0; i != 16; ++i) |
| /* The size of the write below depends on the target. When vectorized |
| the vector size may be 4, 8 or 16, otherwise it may be a series of byte |
| assignments. */ |
| p[i] = i; // { dg-warning "writing (1|2|4|8|16) bytes? into a region of size (0|1|3|7|15)" } |
| return p; |
| } |