diff options
author | Alan Modra <amodra@bigpond.net.au> | 2003-03-19 02:51:41 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2003-03-19 13:21:41 +1030 |
commit | 178274da22dd1139e61f1102de5e8f79a1bc9442 (patch) | |
tree | a93645825c4fe05dc31c8fff826aeea7d1a411c1 /gcc | |
parent | 42151102f00cc2b0567682183163806a3b1ef78a (diff) | |
download | gcc-178274da22dd1139e61f1102de5e8f79a1bc9442.zip gcc-178274da22dd1139e61f1102de5e8f79a1bc9442.tar.gz gcc-178274da22dd1139e61f1102de5e8f79a1bc9442.tar.bz2 |
rs6000.c (rs6000_stack_info): Only require a frame when debugging on XCOFF targets.
* config/rs6000/rs6000.c (rs6000_stack_info): Only require a frame
when debugging on XCOFF targets. Delete "abi" temp.
From-SVN: r64568
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 27 |
2 files changed, 18 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5ebae8..6564254 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2003-03-19 Alan Modra <amodra@bigpond.net.au> + * config/rs6000/rs6000.c (rs6000_stack_info): Only require a frame + when debugging on XCOFF targets. Delete "abi" temp. + PR target/10073 * combine.c (force_to_mode <NOT>): Use gen_int_mode. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 4b7fefd..b78e837 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9168,7 +9168,6 @@ rs6000_stack_info () static rs6000_stack_t info, zero_info; rs6000_stack_t *info_ptr = &info; int reg_size = TARGET_POWERPC64 ? 8 : 4; - enum rs6000_abi abi; int ehrd_size; int total_raw_size; @@ -9186,15 +9185,15 @@ rs6000_stack_info () } /* Select which calling sequence. */ - info_ptr->abi = abi = DEFAULT_ABI; + info_ptr->abi = DEFAULT_ABI; /* Calculate which registers need to be saved & save area size. */ info_ptr->first_gp_reg_save = first_reg_to_save (); /* Assume that we will have to save RS6000_PIC_OFFSET_TABLE_REGNUM, even if it currently looks like we won't. */ if (((TARGET_TOC && TARGET_MINIMAL_TOC) - || (flag_pic == 1 && abi == ABI_V4) - || (flag_pic && abi == ABI_DARWIN)) + || (flag_pic == 1 && DEFAULT_ABI == ABI_V4) + || (flag_pic && DEFAULT_ABI == ABI_DARWIN)) && info_ptr->first_gp_reg_save > RS6000_PIC_OFFSET_TABLE_REGNUM) info_ptr->gp_size = reg_size * (32 - RS6000_PIC_OFFSET_TABLE_REGNUM); else @@ -9237,7 +9236,7 @@ rs6000_stack_info () || (info_ptr->first_fp_reg_save != 64 && !FP_SAVE_INLINE (info_ptr->first_fp_reg_save)) || info_ptr->first_altivec_reg_save <= LAST_ALTIVEC_REGNO - || (abi == ABI_V4 && current_function_calls_alloca) + || (DEFAULT_ABI == ABI_V4 && current_function_calls_alloca) || (DEFAULT_ABI == ABI_DARWIN && flag_pic && current_function_uses_pic_offset_table) @@ -9253,7 +9252,7 @@ rs6000_stack_info () || regs_ever_live[CR4_REGNO]) { info_ptr->cr_save_p = 1; - if (abi == ABI_V4) + if (DEFAULT_ABI == ABI_V4) info_ptr->cr_size = reg_size; } @@ -9299,7 +9298,7 @@ rs6000_stack_info () } /* Calculate the offsets. */ - switch (abi) + switch (DEFAULT_ABI) { case ABI_NONE: default: @@ -9428,14 +9427,18 @@ rs6000_stack_info () if (info_ptr->calls_p) info_ptr->push_p = 1; - else if (abi == ABI_V4) + else if (DEFAULT_ABI == ABI_V4) info_ptr->push_p = total_raw_size > info_ptr->fixed_size; + else if (frame_pointer_needed) + info_ptr->push_p = 1; + + else if (TARGET_XCOFF && write_symbols != NO_DEBUG) + info_ptr->push_p = 1; + else - info_ptr->push_p = (frame_pointer_needed - || (abi != ABI_DARWIN && write_symbols != NO_DEBUG) - || ((total_raw_size - info_ptr->fixed_size) - > (TARGET_32BIT ? 220 : 288))); + info_ptr->push_p + = total_raw_size - info_ptr->fixed_size > (TARGET_32BIT ? 220 : 288); /* Zero offsets if we're not saving those registers. */ if (info_ptr->fp_size == 0) |