Commit 04e9daaf by Kazu Hirata Committed by Kazu Hirata

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
parent b2037eac
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> 2004-01-26 Fariborz Jahanian <fjahanian@apple.com>
* config/rs6000/rs6000.c (rs6000_emit_move): split slow * config/rs6000/rs6000.c (rs6000_emit_move): split slow
......
/* Subroutines for gcc2 for pdp11. /* 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. Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
...@@ -60,6 +60,7 @@ static bool pdp11_assemble_integer (rtx, unsigned int, int); ...@@ -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_prologue (FILE *, HOST_WIDE_INT);
static void pdp11_output_function_epilogue (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_rtx_costs (rtx, int, int, int *);
static bool pdp11_return_in_memory (tree, tree);
/* Initialize the GCC target structure. */ /* Initialize the GCC target structure. */
#undef TARGET_ASM_BYTE_OP #undef TARGET_ASM_BYTE_OP
...@@ -84,6 +85,11 @@ static bool pdp11_rtx_costs (rtx, int, int, int *); ...@@ -84,6 +85,11 @@ static bool pdp11_rtx_costs (rtx, int, int, int *);
#undef TARGET_RTX_COSTS #undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS pdp11_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; struct gcc_target targetm = TARGET_INITIALIZER;
/* Nonzero if OP is a valid second operand for an arithmetic insn. */ /* Nonzero if OP is a valid second operand for an arithmetic insn. */
...@@ -1693,3 +1699,16 @@ output_addr_const_pdp11 (FILE *file, rtx x) ...@@ -1693,3 +1699,16 @@ output_addr_const_pdp11 (FILE *file, rtx x)
output_operand_lossage ("invalid expression as operand"); 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));
}
/* Definitions of target machine for GNU compiler, for the pdp-11 /* 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. Free Software Foundation, Inc.
Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
...@@ -332,13 +332,6 @@ extern int target_flags; ...@@ -332,13 +332,6 @@ extern int target_flags;
/* Register in which static-chain is passed to a function. */ /* Register in which static-chain is passed to a function. */
/* ??? - i don't want to give up a reg for this! */ /* ??? - i don't want to give up a reg for this! */
#define STATIC_CHAIN_REGNUM 4 #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 /* Define the classes of registers for register constraints in the
machine description. Also define ranges of constants. machine description. Also define ranges of constants.
...@@ -562,18 +555,6 @@ maybe ac0 ? - as option someday! */ ...@@ -562,18 +555,6 @@ maybe ac0 ? - as option someday! */
#define FUNCTION_VALUE_REGNO_P(N) (((N) == 0) || (TARGET_AC0 && (N) == 8)) #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. /* 1 if N is a possible register number for function argument passing.
- not used on pdp */ - not used on pdp */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment