| /* { dg-do run } */ |
| |
| __attribute__ ((noinline, noclone)) int |
| foo (char *c) |
| { |
| asm volatile ("" : : "r" (c) : "memory"); |
| return 1; |
| } |
| |
| __attribute__ ((noinline, noclone)) void |
| bar (char *c) |
| { |
| asm volatile ("" : : "r" (c) : "memory"); |
| } |
| |
| int main () |
| { |
| char tpl[20] = "/tmp/test.XXXXXX"; |
| char tpl2[20] = "/tmp/test.XXXXXX"; |
| int fd = foo (tpl); |
| int fd2 = foo (tpl2); |
| if (fd == -1) |
| { |
| if (fd2 != -1) |
| bar (tpl2); |
| return 1; |
| } |
| |
| if (fd2 == -1) |
| return 1; |
| |
| bar (tpl); |
| bar (tpl2); |
| |
| if (__builtin_strcmp (tpl, "/tmp/test.XXXXXX") != 0) |
| return 1; |
| |
| if (__builtin_strcmp (tpl, tpl2) != 0) |
| return 1; |
| |
| return 0; |
| } |