summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-11 14:56:39 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-11 14:56:39 +0000
commitb93508c0ab051d8b35dc1039bc9df575dbbbc9ce (patch)
tree86d760319c5f684bb65a7955d36c6b9540156771 /gcc/emit-rtl.c
parenteb4086077ed1095c11612536c3ab490b7516befb (diff)
downloadgcc-b93508c0ab051d8b35dc1039bc9df575dbbbc9ce.tar.gz
* tree.h (TREE_THIS_NOTRAP): Use TREE_CHECK5.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Only check TREE_THIS_NOTRAP when appropriate. (get_spill_slot_decl): Don't set TREE_THIS_NOTRAP on the new VAR_DECL. * gimplify.c (gimplify_expr): Copy NOTRAP from INDIRECT_REF to newly created MEM_REF. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165313 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 3115523fb8c..01dd70ab567 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1660,7 +1660,11 @@ set_mem_attributes_minus_bitpos (rtx ref, tree t, int objectp,
else
MEM_NOTRAP_P (ref) = 1;
}
- else
+ else if (TREE_CODE (base) == INDIRECT_REF
+ || TREE_CODE (base) == MEM_REF
+ || TREE_CODE (base) == TARGET_MEM_REF
+ || TREE_CODE (base) == ARRAY_REF
+ || TREE_CODE (base) == ARRAY_RANGE_REF)
MEM_NOTRAP_P (ref) = TREE_THIS_NOTRAP (base);
base = get_base_address (base);
@@ -2236,7 +2240,6 @@ get_spill_slot_decl (bool force_build_p)
DECL_ARTIFICIAL (d) = 1;
DECL_IGNORED_P (d) = 1;
TREE_USED (d) = 1;
- TREE_THIS_NOTRAP (d) = 1;
spill_slot_decl = d;
rd = gen_rtx_MEM (BLKmode, frame_pointer_rtx);