diff options
author | Andrew Pinski <apinski@cavium.com> | 2011-07-26 05:28:45 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2011-07-25 22:28:45 -0700 |
commit | 0de204de65593f3a5cfeb4a682e0566657b840f6 (patch) | |
tree | 5df32a8770e8baaad425277737ea84c3ea2e263b /gcc/testsuite | |
parent | 9bc13c238df4ed18f702e70f976408dee0c7df6b (diff) | |
download | gcc-0de204de65593f3a5cfeb4a682e0566657b840f6.zip gcc-0de204de65593f3a5cfeb4a682e0566657b840f6.tar.gz gcc-0de204de65593f3a5cfeb4a682e0566657b840f6.tar.bz2 |
re PR middle-end/49671 (volatile goes missing after inlining)
2011-07-25 Andrew Pinski <apinski@cavium.com>
PR tree-opt/49671
* tree-inline.c (remap_gimple_op_r): Copy TREE_THIS_VOLATILE and
TREE_THIS_NOTRAP into the inner most MEM_REF.
Always copy TREE_THIS_VOLATILE.
* tree-sra.c (ptr_parm_has_direct_uses): Check that the lhs, rhs and
arguments are not volatile references.
2011-07-25 Andrew Pinski <apinski@cavium.com>
PR tree-opt/49671
* gcc.dg/tree-ssa/pr49671-1.c: New testcase.
* gcc.dg/tree-ssa/pr49671-2.c: New testcase.
From-SVN: r176782
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c | 17 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c | 17 |
3 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b903569..dcaab87 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-07-25 Andrew Pinski <apinski@cavium.com> + + PR tree-opt/49671 + * gcc.dg/tree-ssa/pr49671-1.c: New testcase. + * gcc.dg/tree-ssa/pr49671-2.c: New testcase. + 2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * lib/target-supports.exp (check_effective_target_mmap): New proc. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c new file mode 100644 index 0000000..acc9980 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ +volatile int t; +static inline int cvmx_atomic_get32(volatile int *ptr) +{ + return *ptr; +} +void f(void) +{ + while (!cvmx_atomic_get32(&t)) + ; +} + +/* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ + + diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c new file mode 100644 index 0000000..ba5a9d9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ +int t; +static inline int cvmx_atomic_get32(int *ptr) +{ + return *(volatile int*)ptr; +} +void f(void) +{ + while (!cvmx_atomic_get32(&t)) + ; +} + +/* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ + + |