aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2003-03-19 02:51:41 +0000
committerAlan Modra <amodra@gcc.gnu.org>2003-03-19 13:21:41 +1030
commit178274da22dd1139e61f1102de5e8f79a1bc9442 (patch)
treea93645825c4fe05dc31c8fff826aeea7d1a411c1 /gcc
parent42151102f00cc2b0567682183163806a3b1ef78a (diff)
downloadgcc-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/ChangeLog3
-rw-r--r--gcc/config/rs6000/rs6000.c27
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)