aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-02-16 07:56:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-02-16 07:56:16 +0000
commitbd74f4d876ffa7090603bb5d317d7b6e52df43c0 (patch)
tree7b31d1caca27355a4224431eef869f63a0bdf4b1 /gcc/tree-ssa.c
parentd78aecf47261c3bb6b03966db5d1db4564e98b1b (diff)
downloadgcc-bd74f4d876ffa7090603bb5d317d7b6e52df43c0.zip
gcc-bd74f4d876ffa7090603bb5d317d7b6e52df43c0.tar.gz
gcc-bd74f4d876ffa7090603bb5d317d7b6e52df43c0.tar.bz2
re PR c/84190 (double arithmetic on x86 no longer rounds to nearest)
2018-02-16 Richard Biener <rguenther@suse.de> PR tree-optimization/84190 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch volatile accesses if the decl isn't volatile. * g++.dg/torture/pr84190.C: New testcase. From-SVN: r257721
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index ee311ce..949b951 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1427,7 +1427,8 @@ non_rewritable_mem_ref_base (tree ref)
if (! DECL_P (decl))
return NULL_TREE;
if (! is_gimple_reg_type (TREE_TYPE (base))
- || VOID_TYPE_P (TREE_TYPE (base)))
+ || VOID_TYPE_P (TREE_TYPE (base))
+ || TREE_THIS_VOLATILE (decl) != TREE_THIS_VOLATILE (base))
return decl;
if ((TREE_CODE (TREE_TYPE (decl)) == VECTOR_TYPE
|| TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE)