summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-03 11:05:39 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-03 11:05:39 +0000
commitf698147c0328fadc5b571c95f2589fa968a1b0fa (patch)
tree3a710f09f8952506b559b229473ed352a0fefa49 /gcc/tree-ssa.c
parent183dc110df12ed76b1673d12aa048841ca71106a (diff)
downloadgcc-f698147c0328fadc5b571c95f2589fa968a1b0fa.tar.gz
2010-11-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46217 * tree-ssa.c (non_rewritable_mem_ref_base): Check if volatile flag matches. (execute_update_addresses_taken): Likewise. * gcc.dg/pr46217.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166239 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 60abc6b55fc..ca51c664722 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1877,7 +1877,8 @@ non_rewritable_mem_ref_base (tree ref)
if (DECL_P (decl)
&& (!integer_zerop (TREE_OPERAND (base, 1))
|| (DECL_SIZE (decl)
- != TYPE_SIZE (TREE_TYPE (base)))))
+ != TYPE_SIZE (TREE_TYPE (base)))
+ || TREE_THIS_VOLATILE (decl) != TREE_THIS_VOLATILE (base)))
return decl;
}
@@ -1993,7 +1994,9 @@ execute_update_addresses_taken (void)
if (DECL_P (decl)
&& (!integer_zerop (TREE_OPERAND (lhs, 1))
|| (DECL_SIZE (decl)
- != TYPE_SIZE (TREE_TYPE (orig_lhs)))))
+ != TYPE_SIZE (TREE_TYPE (orig_lhs)))
+ || (TREE_THIS_VOLATILE (lhs)
+ != TREE_THIS_VOLATILE (decl))))
bitmap_set_bit (not_reg_needs, DECL_UID (decl));
}
}
@@ -2040,7 +2043,9 @@ execute_update_addresses_taken (void)
if (DECL_P (decl)
&& (!integer_zerop (TREE_OPERAND (lhs, 1))
|| (TYPE_MAIN_VARIANT (TREE_TYPE (decl))
- != TYPE_MAIN_VARIANT (TREE_TYPE (orig_lhs)))))
+ != TYPE_MAIN_VARIANT (TREE_TYPE (orig_lhs)))
+ || (TREE_THIS_VOLATILE (lhs)
+ != TREE_THIS_VOLATILE (decl))))
bitmap_set_bit (not_reg_needs, DECL_UID (decl));
}
}