| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| char volatile * | |
| __attribute__((noinline)) | |
| foo (unsigned i) | |
| { | |
| char volatile buffer[10]; | |
| char volatile *k = i ? & buffer[i] : NULL; /* defeat addr-of-local-returned warning */ | |
| return k; | |
| } | |
| int main () | |
| { | |
| char volatile *f = foo (5); | |
| f[0] = 'b'; | |
| return 0; | |
| } | |
| /* { dg-output "mudflap violation 1.*" } */ | |
| /* { dg-output "Nearby object.*" } */ | |
| /* { dg-output "mudflap dead object.*buffer.*alloc.*dealloc" } */ | |
| /* { dg-do run { xfail *-*-* } } */ |