summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroaki Etoh <etoh@cvs.openbsd.org>2003-02-03 09:18:13 +0000
committerHiroaki Etoh <etoh@cvs.openbsd.org>2003-02-03 09:18:13 +0000
commit3ede9d5910f6f7bf96ed7519806e1b793a472cbb (patch)
treeaf33c889253f93a7bd098f823978ca92ef929f4d
parent868ae747c718dffa9416fd64924a0f93279c7b8a (diff)
modify assign_stack_local to move the addressing of frame pointer plus zero to the function plus_constant_wide.
modify assign_stack_temp_for_type for allocating a space to return a structure.
-rw-r--r--gnu/egcs/gcc/function.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/gnu/egcs/gcc/function.c b/gnu/egcs/gcc/function.c
index cb48ebf4ec0..a819a6b9bc7 100644
--- a/gnu/egcs/gcc/function.c
+++ b/gnu/egcs/gcc/function.c
@@ -825,10 +825,6 @@ assign_stack_local (mode, size, align)
addr = plus_constant (virtual_stack_vars_rtx,
frame_offset + bigend_correction);
- if (flag_propolice_protection
- && addr == virtual_stack_vars_rtx && mode == BLKmode && size > 0)
- addr = gen_rtx_PLUS (GET_MODE (addr), addr, GEN_INT (0));
-
#ifndef FRAME_GROWS_DOWNWARD
frame_offset += size;
#endif
@@ -930,6 +926,7 @@ assign_outer_stack_local (mode, size, align, function)
whose lifetime is controlled by CLEANUP_POINT_EXPRs. KEEP is 3
if we are to allocate something at an inner level to be treated as
a variable in the block (e.g., a SAVE_EXPR).
+ KEEP is 5 if we allocate a place to return a structure.
TYPE is the type that will be used for the stack slot. */
@@ -943,7 +940,8 @@ assign_stack_temp_for_type (mode, size, keep, type)
int align;
int alias_set;
struct temp_slot *p, *best_p = 0;
- int char_array = (keep == 1 && search_string_def (type));
+ int char_array = (flag_propolice_protection
+ && keep == 1 && search_string_def (type));
/* If SIZE is -1 it means that somebody tried to allocate a temporary
of a variable size. */