pdp11.c (TARGET_STRUCT_VALUE_RTX): New.

* config/pdp11/pdp11.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/pdp11/pdp11.h (STRUCT_VALUE): Remove.
	(RETURN_IN_MEMORY): Likewise.

From-SVN: r76654
This commit is contained in:
Kazu Hirata 2004-01-26 18:17:58 +00:00 committed by Kazu Hirata
parent b2037eac29
commit 04e9daaf31
3 changed files with 28 additions and 21 deletions

View File

@ -1,3 +1,10 @@
2004-01-26 Kazu Hirata <kazu@cs.umass.edu>
* config/pdp11/pdp11.c (TARGET_STRUCT_VALUE_RTX): New.
(TARGET_RETURN_IN_MEMORY): Likewise.
* config/pdp11/pdp11.h (STRUCT_VALUE): Remove.
(RETURN_IN_MEMORY): Likewise.
2004-01-26 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.c (rs6000_emit_move): split slow

View File

@ -1,5 +1,5 @@
/* Subroutines for gcc2 for pdp11.
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2004
Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
@ -60,6 +60,7 @@ static bool pdp11_assemble_integer (rtx, unsigned int, int);
static void pdp11_output_function_prologue (FILE *, HOST_WIDE_INT);
static void pdp11_output_function_epilogue (FILE *, HOST_WIDE_INT);
static bool pdp11_rtx_costs (rtx, int, int, int *);
static bool pdp11_return_in_memory (tree, tree);
/* Initialize the GCC target structure. */
#undef TARGET_ASM_BYTE_OP
@ -84,6 +85,11 @@ static bool pdp11_rtx_costs (rtx, int, int, int *);
#undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS pdp11_rtx_costs
#undef TARGET_STRUCT_VALUE_RTX
#define TARGET_STRUCT_VALUE_RTX hook_rtx_tree_int_null
#undef TARGET_RETURN_IN_MEMORY
#define TARGET_RETURN_IN_MEMORY pdp11_return_in_memory
struct gcc_target targetm = TARGET_INITIALIZER;
/* Nonzero if OP is a valid second operand for an arithmetic insn. */
@ -1693,3 +1699,16 @@ output_addr_const_pdp11 (FILE *file, rtx x)
output_operand_lossage ("invalid expression as operand");
}
}
static bool
pdp11_return_in_memory (tree type, tree fntype ATTRIBUTE_UNUSED)
{
/* Should probably return DImode and DFmode in memory, lest
we fill up all regs!
have to, else we crash - exception: maybe return result in
ac0 if DFmode and FPU present - compatibility problem with
libraries for non-floating point.... */
return (TYPE_MODE (type) == DImode
|| (TYPE_MODE (type) == DFmode && ! TARGET_AC0));
}

View File

@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler, for the pdp-11
Copyright (C) 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
Copyright (C) 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2004
Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
@ -332,13 +332,6 @@ extern int target_flags;
/* Register in which static-chain is passed to a function. */
/* ??? - i don't want to give up a reg for this! */
#define STATIC_CHAIN_REGNUM 4
/* Register in which address to store a structure value
is passed to a function.
let's make it an invisible first argument!!! */
#define STRUCT_VALUE 0
/* Define the classes of registers for register constraints in the
machine description. Also define ranges of constants.
@ -562,18 +555,6 @@ maybe ac0 ? - as option someday! */
#define FUNCTION_VALUE_REGNO_P(N) (((N) == 0) || (TARGET_AC0 && (N) == 8))
/* should probably return DImode and DFmode in memory,lest
we fill up all regs!
have to, else we crash - exception: maybe return result in
ac0 if DFmode and FPU present - compatibility problem with
libraries for non-floating point ...
*/
#define RETURN_IN_MEMORY(TYPE) \
(TYPE_MODE(TYPE) == DImode || (TYPE_MODE(TYPE) == DFmode && ! TARGET_AC0))
/* 1 if N is a possible register number for function argument passing.
- not used on pdp */