* final.c (final_scan_insn): Make non-static again.
* output.h (final_scan_insn): Re-add prototype.
* config/arc/arc.c (arc_output_function_epilogue): Add NULL
to final_scan_insn call.
* config/cris/cris.c (cris_target_asm_function_epilogue): Likewise.
* config/mips/mips.c (mips_output_conditional_branch): Likewise.
* config/pa/pa.c (output_lbranch, output_call): Likewise.
* config/sh/sh.c (print_slot): Likewise.
* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Likewise.
(output_sibcall, sparc_flat_function_epilogue): Likewise.
From-SVN: r76117
+2004-01-18 Daniel Jacobowitz <drow@mvista.com>
+
+ * final.c (final_scan_insn): Make non-static again.
+ * output.h (final_scan_insn): Re-add prototype.
+ * config/arc/arc.c (arc_output_function_epilogue): Add NULL
+ to final_scan_insn call.
+ * config/cris/cris.c (cris_target_asm_function_epilogue): Likewise.
+ * config/mips/mips.c (mips_output_conditional_branch): Likewise.
+ * config/pa/pa.c (output_lbranch, output_call): Likewise.
+ * config/sh/sh.c (print_slot): Likewise.
+ * config/sparc/sparc.c (sparc_nonflat_function_epilogue): Likewise.
+ (output_sibcall, sparc_flat_function_epilogue): Likewise.
+
2004-01-18 Jan Hubicka <jh@suse.cz>
* basic-block.h (try_redirect_by_replacing_jump): Declare.
/* Subroutines used for code generation on the Argonaut ARC cpu.
- Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GCC.
/* ??? If stack intactness is important, always emit now. */
if (MUST_SAVE_RETURN_ADDR && epilogue_delay != NULL_RTX)
{
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
epilogue_delay = NULL_RTX;
}
{
if (epilogue_delay)
{
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1,
+ NULL);
}
}
abort ();
if (restored < size)
abort ();
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
}
else if (frame_pointer_needed && !fp_restored_p)
{
/* Definitions for GCC. Part of the machine description for CRIS.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by Axis Communications. Written by Hans-Peter Nilsson.
This file is part of GCC.
/* Output the delay-slot-insn the mandated way. */
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, -2, 1);
+ file, 1, -2, 1, NULL);
}
else if (file)
{
/* Output delay slot instruction. */
rtx insn = final_sequence;
final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file,
- optimize, 0, 1);
+ optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
else
/* Output delay slot instruction. */
rtx insn = final_sequence;
final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file,
- optimize, 0, 1);
+ optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
else
/* Subroutines for insn-output.c for HPPA.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Tim Moore (moore@cs.utah.edu), based on sparc.c
This file is part of GCC.
abort ();
final_scan_insn (NEXT_INSN (insn), asm_out_file,
- optimize, 0, 0);
+ optimize, 0, 0, NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
&& !sibcall)
{
final_scan_insn (NEXT_INSN (insn), asm_out_file,
- optimize, 0, 0);
+ optimize, 0, 0, NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
/* A non-jump insn in the delay slot. By definition we can
emit this insn before the call (and in fact before argument
relocating. */
- final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, 0);
+ final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, 0,
+ NULL);
/* Now delete the delay insn. */
PUT_CODE (NEXT_INSN (insn), NOTE);
static void
print_slot (rtx insn)
{
- final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 0, 1);
+ final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 0, 1, NULL);
INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1;
}
/* Subroutines for insn-output.c for SPARC.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
at Cygnus Support.
? "\treturn\t%i7+12\n"
: "\treturn\t%i7+8\n", file);
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, 0, 0);
+ file, 1, 0, 0, NULL);
}
else
{
insn = emit_jump_insn (insn);
sparc_emitting_epilogue = true;
- final_scan_insn (insn, file, 1, 0, 1);
+ final_scan_insn (insn, file, 1, 0, 1, NULL);
sparc_emitting_epilogue = false;
}
}
abort ();
fprintf (file, "\t%s\n", ret);
final_scan_insn (XEXP (current_function_epilogue_delay_list, 0),
- file, 1, 0, 1);
+ file, 1, 0, 1, NULL);
}
/* Output 'nop' instead of 'sub %sp,-0,%sp' when no frame, so as to
avoid generating confusing assembly language output. */
if (! delay)
abort ();
- final_scan_insn (delay, asm_out_file, 1, 0, 1);
+ final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
PATTERN (delay) = gen_blockage ();
INSN_CODE (delay) = -1;
delay_slot = 0;
if (! delay)
abort ();
- final_scan_insn (delay, asm_out_file, 1, 0, 1);
+ final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
PATTERN (delay) = gen_blockage ();
INSN_CODE (delay) = -1;
delay_slot = 0;
{
if (size)
abort ();
- final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1);
+ final_scan_insn (XEXP (epilogue_delay, 0), file, 1, -2, 1, NULL);
}
else if (size > 4096)
#ifdef HAVE_ATTR_length
static int align_fuzz (rtx, rtx, int, unsigned);
#endif
-static rtx final_scan_insn (rtx, FILE *, int, int, int, int *);
\f
/* Initialize data in final at the beginning of a compilation. */
at the beginning of the second basic block, whichever comes
first. */
-static rtx
+rtx
final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
int prescan, int nopeepholes ATTRIBUTE_UNUSED,
int *seen)
/* Output assembler code for some insns: all or part of a function. */
extern void final (rtx, FILE *, int, int);
+/* The final scan for one insn, INSN. Args are same as in `final', except
+ that INSN is the insn being scanned. Value returned is the next insn to
+ be scanned. */
+extern rtx final_scan_insn (rtx, FILE *, int, int, int, int *);
+
/* Replace a SUBREG with a REG or a MEM, based on the thing it is a
subreg of. */
extern rtx alter_subreg (rtx *);