diff options
author | Richard Guenther <rguenther@suse.de> | 2011-09-26 12:58:35 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-09-26 12:58:35 +0000 |
commit | f8a7df459498f6e5c3308e9e3de3252dccecff9a (patch) | |
tree | 851dba3ea227d9d83fa999a66f6e3c047a8e9978 /gcc | |
parent | b5bcaa4a74c02648eb45c015ff03c15cdac82fe1 (diff) | |
download | gcc-f8a7df459498f6e5c3308e9e3de3252dccecff9a.zip gcc-f8a7df459498f6e5c3308e9e3de3252dccecff9a.tar.gz gcc-f8a7df459498f6e5c3308e9e3de3252dccecff9a.tar.bz2 |
re PR tree-optimization/50472 (Volatile qualification in data is not enough to avoid optimization over pointer to data)
2011-09-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/50472
* gimple-fold.c (fold_const_aggregate_ref_1): Do not fold
volatile references.
* gcc.dg/torture/pr50472.c: New testcase.
From-SVN: r179196
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimple-fold.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr50472.c | 12 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7b1f54d..899ffe0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,11 @@ +2011-09-26 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/50472 + * gimple-fold.c (fold_const_aggregate_ref_1): Do not fold + volatile references. + 2011-09-26 Bingfeng Mei <bmei@broadcom.com> + * doc/tm.texi: Correct documentation for TARGET_ADDR_SPACE_SUBSET_P. * target.def: (addr_space_subset_p): Likewise. diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index b481c4a..d754ea9 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -2919,6 +2919,9 @@ fold_const_aggregate_ref_1 (tree t, tree (*valueize) (tree)) HOST_WIDE_INT offset, size, max_size; tree tem; + if (TREE_THIS_VOLATILE (t)) + return NULL_TREE; + if (TREE_CODE_CLASS (TREE_CODE (t)) == tcc_declaration) return get_symbol_constant_value (t); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 35dea73..6caed7a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-09-26 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/50472 + * gcc.dg/torture/pr50472.c: New testcase. + 2011-09-26 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/opt22.adb: New test. diff --git a/gcc/testsuite/gcc.dg/torture/pr50472.c b/gcc/testsuite/gcc.dg/torture/pr50472.c new file mode 100644 index 0000000..280f2c4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr50472.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-fdump-tree-optimized" } */ + +static const unsigned int foo = 1; +unsigned int test( void ) +{ + const volatile unsigned int *bar = &foo; + return ( *bar ); +} + +/* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ |