diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/c-c++-common/torture/pr42834.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/c-c++-common/torture/pr42834.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr42834.c b/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr42834.c new file mode 100644 index 000000000..a1ba49e46 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/torture/pr42834.c @@ -0,0 +1,23 @@ +/* { dg-do run } */ + +void __attribute__((noinline,noclone)) +foo(int *p, float *q) { __asm__ volatile ("" : : : "memory"); } + +int main() +{ + if (sizeof (int) == sizeof (float)) + { + int i; + float f; + int *p; + /* Prevent i and f from being rewritten into SSA form. */ + foo (&i, &f); + i = 0; + f = 1.0; + p = (int *)&f; + __builtin_memcpy (&i, p, 4); + if (*(float *)&i != 1.0) + __builtin_abort (); + } + return 0; +} |