Commit 52695ce0 by Herman A.J. ten Brugge Committed by Michael Hayes

c4x.md (set_ldp_prologue): Add for RTL prologue/epilogue.

	* config/c4x/c4x.md (set_ldp_prologue): Add for RTL prologue/epilogue.
	(push_st, push_dp, pop_st, pop_dp, popqi_unspec): Likewise.
	(nodb_call, return_from_epilogue): Likewise.
	(return_from_interrupt_epilogue, prologue, epilogue): Likewise.
	* config/c4x/c4x.c (c4x_expand_prologue, c4x_expand_eplilogue): Add.
	* config/c4x/c4x-protos.h (c4x_interrupt_function_p): Add.
	(c4x_expand_prologue, c4x_expand_epilogue): Likewise.
	(c4x_valid_type_attribute_p): Likewise.
	* config/c4x/c4x.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Delete.
	(FUNCTION_BLOCK_PROFILER_EXIT): Convert to emit RTL.

Co-Authored-By: Michael Hayes <m.hayes@elec.canterbury.ac.nz>

From-SVN: r35341
parent 8d485e2d
2000-07-30 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.md (set_ldp_prologue): Add for RTL prologue/epilogue.
(push_st, push_dp, pop_st, pop_dp, popqi_unspec): Likewise.
(nodb_call, return_from_epilogue): Likewise.
(return_from_interrupt_epilogue, prologue, epilogue): Likewise.
* config/c4x/c4x.c (c4x_expand_prologue, c4x_expand_eplilogue): Add.
* config/c4x/c4x-protos.h (c4x_interrupt_function_p): Add.
(c4x_expand_prologue, c4x_expand_epilogue): Likewise.
(c4x_valid_type_attribute_p): Likewise.
* config/c4x/c4x.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Delete.
(FUNCTION_BLOCK_PROFILER_EXIT): Convert to emit RTL.
2000-07-30 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.c (c4x_emit_move_sequence): Use loadqi_big_constant
......
......@@ -28,9 +28,11 @@ extern void c4x_optimization_options PARAMS ((int, int));
extern void c4x_output_ascii PARAMS ((FILE *, const char *, int));
extern void c4x_function_prologue PARAMS ((FILE *, int));
extern int c4x_interrupt_function_p PARAMS ((void));
extern void c4x_function_epilogue PARAMS ((FILE *, int));
extern void c4x_expand_prologue PARAMS ((void));
extern void c4x_expand_epilogue PARAMS ((void));
extern int c4x_null_epilogue_p PARAMS ((void));
......@@ -55,6 +57,8 @@ extern struct rtx_def *c4x_function_arg PARAMS ((CUMULATIVE_ARGS *,
int));
extern void c4x_encode_section_info PARAMS ((tree));
extern int c4x_valid_type_attribute_p PARAMS ((tree, tree, tree, tree));
#endif /* TREE_CODE */
......@@ -72,7 +76,7 @@ extern struct rtx_def *c4x_gen_compare_reg PARAMS ((enum rtx_code, rtx, rtx));
extern int c4x_check_legit_addr PARAMS ((enum machine_mode, rtx, int));
extern int c4x_hard_regno_mode_ok PARAMS ((int, enum machine_mode));
extern int c4x_hard_regno_mode_ok PARAMS ((unsigned int, enum machine_mode));
extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx,
enum machine_mode));
......@@ -91,7 +95,7 @@ extern enum reg_class c4x_preferred_reload_class PARAMS ((rtx,
extern struct rtx_def *c4x_operand_subword PARAMS ((rtx, int, int,
enum machine_mode));
extern char *c4x_output_cbranch PARAMS ((char *, rtx));
extern char *c4x_output_cbranch PARAMS ((const char *, rtx));
extern int c4x_label_conflict PARAMS ((rtx, rtx, rtx));
......@@ -101,12 +105,16 @@ extern int c4x_adjust_cost PARAMS ((rtx, rtx, rtx, int));
extern void c4x_process_after_reload PARAMS ((rtx));
extern void c4x_rptb_insert PARAMS ((rtx insn));
extern int c4x_rptb_nop_p PARAMS ((rtx));
extern int c4x_rptb_rpts_p PARAMS ((rtx, rtx));
extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode));
extern int any_operand PARAMS ((rtx, enum machine_mode));
extern int fp_zero_operand PARAMS ((rtx, enum machine_mode));
extern int const_operand PARAMS ((rtx, enum machine_mode));
......
......@@ -1346,24 +1346,6 @@ c4x_emit_move_sequence (operands, mode)
return 1;
}
if (mode == QImode
&& reg_operand (op0, mode)
&& const_int_operand (op1, mode)
&& ! IS_INT16_CONST (INTVAL (op1))
&& ! IS_HIGH_CONST (INTVAL (op1)))
{
emit_insn (gen_loadqi_big_constant (op0, op1));
return 1;
}
if (mode == HImode
&& reg_operand (op0, mode)
&& const_int_operand (op1, mode))
{
emit_insn (gen_loadhi_big_constant (op0, op1));
return 1;
}
/* Adjust operands in case we have modified them. */
operands[0] = op0;
operands[1] = op1;
......
......@@ -1153,12 +1153,6 @@ CUMULATIVE_ARGS;
#define EXPAND_BUILTIN_VA_ARG(valist, type) \
c4x_va_arg (valist, type)
/* Function Entry and Exit. */
#define FUNCTION_PROLOGUE(FILE, SIZE) c4x_function_prologue(FILE, SIZE)
#define FUNCTION_EPILOGUE(FILE, SIZE) c4x_function_epilogue(FILE, SIZE)
/* Generating Code for Profiling. */
/* Note that the generated assembly uses the ^ operator to load the 16
......@@ -1378,13 +1372,16 @@ CUMULATIVE_ARGS;
} \
}
#define FUNCTION_BLOCK_PROFILER_EXIT(FILE) \
#define FUNCTION_BLOCK_PROFILER_EXIT \
{ \
fprintf (FILE, "\tpush\tst\n"); \
fprintf (FILE, "\tpush\tar2\n"); \
fprintf (FILE, "\tcall\t___bb_trace_ret\n"); \
fprintf (FILE, "\tpop\tar2\n"); \
fprintf (FILE, "\tpop\tst\n"); \
emit_insn (gen_push_st ()); \
emit_insn (gen_pushqi ( \
gen_rtx_REG (QImode, AR2_REGNO))); \
emit_call_insn (gen_nodb_call ( \
gen_rtx_SYMBOL_REF (QImode, "__bb_trace_ret")));\
emit_insn (gen_popqi_unspec ( \
gen_rtx_REG (QImode, AR2_REGNO))); \
emit_insn (gen_pop_st ()); \
}
#define MACHINE_STATE_SAVE(ID) \
......
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