Use init/mark/free machine status functions.

Fix compile time warnings building varasm.o
Define USER_LABEL_PREFIX, undefine ASM_OUTPUT_LABELREF

From-SVN: r38815
This commit is contained in:
Nick Clifton 2001-01-09 03:10:13 +00:00 committed by Nick Clifton
parent 4a70b13a4c
commit 61db460830
4 changed files with 62 additions and 46 deletions

View File

@ -1,3 +1,20 @@
2001-01-08 Nick Clifton <nickc@redhat.com>
* config/v850/v850.c (ra_rtx): Delete.
(v850_save_machine_status): Delete.
(v850_restore_machine_status): Delete.
(v850_init_machine_status): New function.
(v850_mark_machine_status): New function.
(v850_free_machine_status): New function.
(v850_return_addr): Use ra_rtx field in machine structure.
(v850_init_expanders): Use new functions.
* config/v850/v850-protos.h: Fix prototypes for v850_output_*
* config/v850/v850.c: Change arguments to v850_output+* functions
to take a const char *, to avoid compile time warning.
* config/v850/v850.h (ASM_OUTPUT_LABELREF): Undefine, not needed.
(USER_LABEL_PREFIX): Redefine.
2000-01-08 Jim Wilson <wilson@redhat.com>
* sched-rgn.c (BITSET_ADD, BITSET_REMOVE, bitset_member): Cast

View File

@ -76,9 +76,9 @@ extern int v850_valid_machine_decl_attribute PARAMS ((tree, tree, tree));
extern void v850_encode_data_area PARAMS ((tree));
extern void v850_set_default_decl_attr PARAMS ((tree));
extern int v850_interrupt_function_p PARAMS ((tree));
extern void v850_output_aligned_bss PARAMS ((FILE *, tree, char *, int, int));
extern void v850_output_common PARAMS ((FILE *, tree, char *, int, int));
extern void v850_output_local PARAMS ((FILE *, tree, char *, int, int));
extern void v850_output_aligned_bss PARAMS ((FILE *, tree, const char *, int, int));
extern void v850_output_common PARAMS ((FILE *, tree, const char *, int, int));
extern void v850_output_local PARAMS ((FILE *, tree, const char *, int, int));
extern v850_data_area v850_get_data_area PARAMS ((tree));
#ifdef HAVE_MACHINE_MODES
extern int function_arg_partial_nregs PARAMS ((CUMULATIVE_ARGS *, Mmode, tree, int));

View File

@ -47,14 +47,14 @@ Boston, MA 02111-1307, USA. */
#endif
/* Function prototypes for stupid compilers: */
static void const_double_split
PARAMS ((rtx, HOST_WIDE_INT *, HOST_WIDE_INT *));
static int const_costs_int PARAMS ((HOST_WIDE_INT, int));
static void substitute_ep_register PARAMS ((rtx, rtx, int, int, rtx *, rtx *));
static int ep_memory_offset PARAMS ((enum machine_mode, int));
static void v850_set_data_area PARAMS ((tree, v850_data_area));
static void v850_save_machine_status PARAMS ((struct function *));
static void v850_restore_machine_status PARAMS ((struct function *));
static void const_double_split PARAMS ((rtx, HOST_WIDE_INT *, HOST_WIDE_INT *));
static int const_costs_int PARAMS ((HOST_WIDE_INT, int));
static void substitute_ep_register PARAMS ((rtx, rtx, int, int, rtx *, rtx *));
static int ep_memory_offset PARAMS ((enum machine_mode, int));
static void v850_set_data_area PARAMS ((tree, v850_data_area));
static void v850_init_machine_status PARAMS ((struct function *));
static void v850_mark_machine_status PARAMS ((struct function *));
static void v850_free_machine_status PARAMS ((struct function *));
/* True if the current function has anonymous arguments. */
int current_function_anonymous_args;
@ -1153,7 +1153,7 @@ Saved %d bytes (%d uses of register %s) in function %s, starting as insn %d, end
as a C statement to act on the code starting at INSN.
On the 850, we use it to implement the -mep mode to copy heavily used
pointers to ep to use the implicit addressing */
pointers to ep to use the implicit addressing. */
void v850_reorg (start_insn)
rtx start_insn;
@ -1173,7 +1173,7 @@ void v850_reorg (start_insn)
rtx insn;
rtx pattern;
/* If not ep mode, just return now */
/* If not ep mode, just return now. */
if (!TARGET_EP)
return;
@ -2556,7 +2556,7 @@ void
v850_output_aligned_bss (file, decl, name, size, align)
FILE * file;
tree decl;
char * name;
const char * name;
int size;
int align;
{
@ -2596,7 +2596,7 @@ void
v850_output_common (file, decl, name, size, align)
FILE * file;
tree decl;
char * name;
const char * name;
int size;
int align;
{
@ -2635,7 +2635,7 @@ void
v850_output_local (file, decl, name, size, align)
FILE * file;
tree decl;
char * name;
const char * name;
int size;
int align;
{
@ -2788,9 +2788,6 @@ v850_va_arg (valist, type)
}
/* Functions to save and restore machine-specific function data. */
static rtx ra_rtx;
struct machine_function
{
/* Records __builtin_return address. */
@ -2798,19 +2795,24 @@ struct machine_function
};
static void
v850_save_machine_status (p)
v850_init_machine_status (p)
struct function * p;
{
p->machine =
(struct machine_function *) xcalloc (1, sizeof (struct machine_function));
p->machine->ra_rtx = ra_rtx;
}
static void
v850_restore_machine_status (p)
v850_mark_machine_status (p)
struct function * p;
{
ggc_mark_rtx (p->machine->ra_rtx);
}
static void
v850_free_machine_status (p)
struct function * p;
{
ra_rtx = p->machine->ra_rtx;
free (p->machine);
p->machine = NULL;
}
@ -2825,17 +2827,17 @@ v850_return_addr (count)
if (count != 0)
return const0_rtx;
if (ra_rtx == NULL)
if (cfun->machine->ra_rtx == NULL)
{
rtx init;
/* No rtx yet. Invent one, and initialize it for r31 (lp) in
the prologue. */
ra_rtx = gen_reg_rtx (Pmode);
cfun->machine->ra_rtx = gen_reg_rtx (Pmode);
init = gen_rtx_REG (Pmode, LINK_POINTER_REGNUM);
init = gen_rtx_SET (VOIDmode, ra_rtx, init);
init = gen_rtx_SET (VOIDmode, cfun->machine->ra_rtx, init);
/* Emit the insn to the prologue with the other argument copies. */
push_topmost_sequence ();
@ -2843,8 +2845,7 @@ v850_return_addr (count)
pop_topmost_sequence ();
}
debug_rtx (ra_rtx);
return ra_rtx;
return cfun->machine->ra_rtx;
}
/* Do anything needed before RTL is emitted for each function. */
@ -2852,8 +2853,7 @@ v850_return_addr (count)
void
v850_init_expanders ()
{
ra_rtx = NULL;
save_machine_status = v850_save_machine_status;
restore_machine_status = v850_restore_machine_status;
init_machine_status = v850_init_machine_status;
mark_machine_status = v850_mark_machine_status;
free_machine_status = v850_free_machine_status;
}

View File

@ -1262,6 +1262,9 @@ do { \
#define ASM_APP_OFF "#NO_APP\n"
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
/* This is how to output an assembler line defining a `double' constant.
It is .double or .float, depending. */
@ -1341,19 +1344,15 @@ do { char dstr[30]; \
/* This is how to output a command to make the user-level label named NAME
defined for reference from other files. */
#define ASM_GLOBALIZE_LABEL(FILE, NAME) \
do { fputs ("\t.global ", FILE); assemble_name (FILE, NAME); fputs ("\n", FILE);} while (0)
#define ASM_GLOBALIZE_LABEL(FILE, NAME) \
do \
{ \
fputs ("\t.global ", FILE); \
assemble_name (FILE, NAME); \
fputs ("\n", FILE); \
} \
while (0)
/* This is how to output a reference to a user-level label named NAME.
`assemble_name' uses this. */
#undef ASM_OUTPUT_LABELREF
#define ASM_OUTPUT_LABELREF(FILE, NAME) \
do { \
const char * real_name; \
STRIP_NAME_ENCODING (real_name, (NAME)); \
fprintf (FILE, "_%s", real_name); \
} while (0)
/* Store in OUTPUT a string (made with alloca) containing
an assembler-name for a local static variable named NAME.
@ -1608,11 +1607,11 @@ extern union tree_node * GHS_current_section_names [(int) COUNT_OF_GHS_SECTION_K
#define SDA_NAME_P(NAME) (*(NAME) == SDA_NAME_FLAG_CHAR)
#define ENCODED_NAME_P(SYMBOL_NAME) \
(ZDA_NAME_P (SYMBOL_NAME) \
( ZDA_NAME_P (SYMBOL_NAME) \
|| TDA_NAME_P (SYMBOL_NAME) \
|| SDA_NAME_P (SYMBOL_NAME))
#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
#define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \
(VAR) = (SYMBOL_NAME) + (ENCODED_NAME_P (SYMBOL_NAME) || *(SYMBOL_NAME) == '*')
/* Define this if you have defined special-purpose predicates in the