diff options
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/expr.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8b6111e..6c0ec7c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2011-07-28 Aldy Hernandez <aldyh@redhat.com> + + * expr.c (get_bit_range): Handle *MEM_REF's. + 2011-07-28 Bernd Schmidt <bernds@codesourcery.com> * rtlanal.c (tablejump_p): False for returns. @@ -4158,7 +4158,10 @@ get_bit_range (unsigned HOST_WIDE_INT *bitstart, /* If other threads can't see this value, no need to restrict stores. */ if (ALLOW_STORE_DATA_RACES - || (!ptr_deref_may_alias_global_p (innerdecl) + || ((TREE_CODE (innerdecl) == MEM_REF + || TREE_CODE (innerdecl) == TARGET_MEM_REF) + && !ptr_deref_may_alias_global_p (TREE_OPERAND (innerdecl, 0))) + || (DECL_P (innerdecl) && (DECL_THREAD_LOCAL_P (innerdecl) || !TREE_STATIC (innerdecl)))) { |