summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-08-31 16:26:51 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2005-08-31 16:26:51 +0000
commit43283c919fd31a5b7099e51657f0455938cde4c5 (patch)
treef7a2dee22307156d52f9729484b53473c1ff7f74 /gcc/function.c
parent350cce57f58b82034d2f772aea0a8494a7d4a50b (diff)
downloadgcc-43283c919fd31a5b7099e51657f0455938cde4c5.tar.gz
PR rtl-opt/23601
* reload1.c (reload): Set MEM_NOTRAP_P in spill slots. (fixup_eh_region_note): New. (reload_as_needed): Call it. (fixup_abnormal_edges): Allow all throwing insns to be deleted; don't call find_many_sub_basic_blocks; call verify_flow_info. * function.c (assign_stack_local_1): Set MEM_NOTRAP_P. (keep_stack_depressed): Likewise. (assign_stack_temp_for_type): Likewise; use adjust_address_nv. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103680 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c
index fab19ae2ee7..3ee5e8b8892 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -474,6 +474,7 @@ assign_stack_local_1 (enum machine_mode mode, HOST_WIDE_INT size, int align,
function->x_frame_offset += size;
x = gen_rtx_MEM (mode, addr);
+ MEM_NOTRAP_P (x) = 1;
function->x_stack_slot_list
= gen_rtx_EXPR_LIST (VOIDmode, x, function->x_stack_slot_list);
@@ -649,9 +650,7 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
p->size = best_p->size - rounded_size;
p->base_offset = best_p->base_offset + rounded_size;
p->full_size = best_p->full_size - rounded_size;
- p->slot = gen_rtx_MEM (BLKmode,
- plus_constant (XEXP (best_p->slot, 0),
- rounded_size));
+ p->slot = adjust_address_nv (best_p->slot, BLKmode, rounded_size);
p->align = best_p->align;
p->address = 0;
p->type = best_p->type;
@@ -743,6 +742,7 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
MEM_VOLATILE_P (slot) = TYPE_VOLATILE (type);
MEM_SET_IN_STRUCT_P (slot, AGGREGATE_TYPE_P (type));
}
+ MEM_NOTRAP_P (slot) = 1;
return slot;
}
@@ -4822,6 +4822,7 @@ keep_stack_depressed (rtx insns)
info.sp_offset));
retaddr = gen_rtx_MEM (Pmode, retaddr);
+ MEM_NOTRAP_P (retaddr) = 1;
/* If there is a pending load to the equivalent register for SP
and we reference that register, we must load our address into