s390.c (override_options): Return error if -mbackchain, -mpacked-stack and -mhard-float are used together.

2005-01-11  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (override_options): Return error if
	-mbackchain, -mpacked-stack and -mhard-float are used together.
	(s390_va_start): Remove the backchain && packed-stack special case.
	(s390_gimplify_va_arg): Likewise.
	* doc/invoke.texi: Remove the ABI incompatibility note.

From-SVN: r93182
This commit is contained in:
Andreas Krebbel 2005-01-11 10:15:32 +00:00 committed by Ulrich Weigand
parent 66480e9146
commit 6b78f6bee5
3 changed files with 24 additions and 19 deletions

View File

@ -1,3 +1,11 @@
2005-01-11 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (override_options): Return error if
-mbackchain, -mpacked-stack and -mhard-float are used together.
(s390_va_start): Remove the backchain && packed-stack special case.
(s390_gimplify_va_arg): Likewise.
* doc/invoke.texi: Remove the ABI incompatibility note.
2005-01-11 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (struct s390_frame_layout): Remove

View File

@ -1424,6 +1424,10 @@ override_options (void)
s390_cost = &z900_cost;
if (TARGET_BACKCHAIN && TARGET_PACKED_STACK && TARGET_HARD_FLOAT)
error ("-mbackchain -mpacked-stack -mhard-float are not supported "
"in combination.");
if (s390_warn_framesize_string)
{
if (sscanf (s390_warn_framesize_string, HOST_WIDE_INT_PRINT_DEC,
@ -7711,15 +7715,9 @@ s390_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED)
/* Find the register save area. */
t = make_tree (TREE_TYPE (sav), return_address_pointer_rtx);
if (TARGET_BACKCHAIN && TARGET_PACKED_STACK) /* kernel stack layout */
t = build (PLUS_EXPR, TREE_TYPE (sav), t,
build_int_cst (NULL_TREE,
-(RETURN_REGNUM - 2) * UNITS_PER_WORD
- (TARGET_64BIT ? 4 : 2) * 8));
else
t = build (PLUS_EXPR, TREE_TYPE (sav), t,
build_int_cst (NULL_TREE, -RETURN_REGNUM * UNITS_PER_WORD));
t = build (PLUS_EXPR, TREE_TYPE (sav), t,
build_int_cst (NULL_TREE, -RETURN_REGNUM * UNITS_PER_WORD));
t = build (MODIFY_EXPR, TREE_TYPE (sav), sav, t);
TREE_SIDE_EFFECTS (t) = 1;
expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
@ -7787,8 +7785,7 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
/* kernel stack layout on 31 bit: It is assumed here that no padding
will be added by s390_frame_info because for va_args always an even
number of gprs has to be saved r15-r2 = 14 regs. */
sav_ofs = ((TARGET_BACKCHAIN && TARGET_PACKED_STACK) ?
(TARGET_64BIT ? 4 : 2) * 8 : 2 * UNITS_PER_WORD);
sav_ofs = 2 * UNITS_PER_WORD;
sav_scale = UNITS_PER_WORD;
size = UNITS_PER_WORD;
max_reg = 4;
@ -7805,8 +7802,7 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
indirect_p = 0;
reg = fpr;
n_reg = 1;
sav_ofs = ((TARGET_BACKCHAIN && TARGET_PACKED_STACK) ?
0 : 16 * UNITS_PER_WORD);
sav_ofs = 16 * UNITS_PER_WORD;
sav_scale = 8;
/* TARGET_64BIT has up to 4 parameter in fprs */
max_reg = TARGET_64BIT ? 3 : 1;
@ -7827,8 +7823,7 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
/* kernel stack layout on 31 bit: It is assumed here that no padding
will be added by s390_frame_info because for va_args always an even
number of gprs has to be saved r15-r2 = 14 regs. */
sav_ofs = ((TARGET_BACKCHAIN && TARGET_PACKED_STACK) ?
(TARGET_64BIT ? 4 : 2) * 8 : 2 * UNITS_PER_WORD);
sav_ofs = 2 * UNITS_PER_WORD;
if (size < UNITS_PER_WORD)
sav_ofs += UNITS_PER_WORD - size;

View File

@ -10892,8 +10892,9 @@ save area.
In general, code compiled with @option{-mbackchain} is call-compatible with
code compiled with @option{-mmo-backchain}; however, use of the backchain
for debugging purposes usually requires that the whole binary is built with
@option{-mbackchain}. Note that the combination of @option{-mbackchain} and
@option{-mpacked-stack} generates code that is not ABI-compatible.
@option{-mbackchain}. Note that the combination of @option{-mbackchain},
@option{-mpacked-stack} and @option{-mhard-float} is not supported. In order
to build a linux kernel use @option{-msoft-float}.
The default is to not maintain the backchain.
@ -10917,8 +10918,9 @@ As long as the stack frame backchain is not used, code generated with
S/390 or zSeries generated code that uses the stack frame backchain at run
time, not just for debugging purposes. Such code is not call-compatible
with code compiled with @option{-mpacked-stack}. Also, note that the
combination of @option{-mbackchain} and @option{-mpacked-stack} generates code
that is not ABI-compatible.
combination of @option{-mbackchain},
@option{-mpacked-stack} and @option{-mhard-float} is not supported. In order
to build a linux kernel use @option{-msoft-float}.
The default is to not use the packed stack layout.