diff options
author | Richard Biener <rguenther@suse.de> | 2018-02-16 07:56:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-02-16 07:56:16 +0000 |
commit | bd74f4d876ffa7090603bb5d317d7b6e52df43c0 (patch) | |
tree | 7b31d1caca27355a4224431eef869f63a0bdf4b1 /gcc/tree-ssa.c | |
parent | d78aecf47261c3bb6b03966db5d1db4564e98b1b (diff) | |
download | gcc-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.c | 3 |
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) |