aboutsummaryrefslogtreecommitdiff
path: root/gcc/rtl.h
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1992-08-08 15:19:34 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1992-08-08 15:19:34 +0000
commitf837a86171d0debc8546b9069deaf8968f251a06 (patch)
tree0834e09b5caa55aaceeefd7e8ab80819c97fec98 /gcc/rtl.h
parente83d45c45e9155cb449b3ce70afabc175b572d29 (diff)
downloadgcc-f837a86171d0debc8546b9069deaf8968f251a06.zip
gcc-f837a86171d0debc8546b9069deaf8968f251a06.tar.gz
gcc-f837a86171d0debc8546b9069deaf8968f251a06.tar.bz2
Add prototype support.
From-SVN: r1785
Diffstat (limited to 'gcc/rtl.h')
-rw-r--r--gcc/rtl.h295
1 files changed, 178 insertions, 117 deletions
diff --git a/gcc/rtl.h b/gcc/rtl.h
index c724b66..7c7edbe 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -131,6 +131,15 @@ typedef struct rtx_def
rtunion fld[1];
} *rtx;
+/* Add prototype support. */
+#ifndef PROTO
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define PROTO(ARGS) ARGS
+#else
+#define PROTO(ARGS) ()
+#endif
+#endif
+
#define NULL_RTX (rtx) 0
/* Define a generic NULL if one hasn't already been defined. */
@@ -139,8 +148,16 @@ typedef struct rtx_def
#define NULL 0
#endif
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
#ifndef NULL_PTR
-#define NULL_PTR (char *) NULL
+#define NULL_PTR ((GENERIC_PTR)0)
#endif
/* Define macros to access the `code' field of the rtx. */
@@ -568,118 +585,146 @@ extern char *note_insn_name[];
#define plus_constant_for_output(X,C) \
plus_constant_for_output_wide (X, (HOST_WIDE_INT) (C))
-extern rtx plus_constant_wide (), plus_constant_for_output_wide ();
+extern rtx plus_constant_wide PROTO((rtx, HOST_WIDE_INT));
+extern rtx plus_constant_for_output_wide PROTO((rtx, HOST_WIDE_INT));
#define GEN_INT(N) gen_rtx (CONST_INT, VOIDmode, (N))
-extern rtx gen_rtx ();
+#if 0
+/* We cannot define prototypes for the variable argument functions,
+ since they have not been ANSI-fied, and an ANSI compiler would
+ complain when compiling the definition of these functions. */
-extern char *xmalloc ();
-extern char *xrealloc ();
-extern char *oballoc ();
-extern char *permalloc ();
-extern void free ();
-extern rtx rtx_alloc ();
-extern rtvec rtvec_alloc ();
-extern rtx find_reg_note ();
-extern rtx find_regno_note ();
-extern HOST_WIDE_INT get_integer_term ();
-extern rtx get_related_value ();
-extern rtx single_set ();
-extern rtx find_last_value ();
-extern rtx copy_rtx ();
-extern rtx copy_rtx_if_shared ();
-extern rtx copy_most_rtx ();
-extern rtx replace_rtx ();
+extern rtx gen_rtx PROTO((enum rtx_code, enum machine_mode, ...));
+extern rtvec gen_rtvec PROTO((int, ...));
+
+#else
+extern rtx gen_rtx ();
extern rtvec gen_rtvec ();
-extern rtvec gen_rtvec_v ();
+#endif
+
+#ifdef BUFSIZ /* stdio.h has been included */
+extern rtx read_rtx PROTO((FILE *));
+#else
extern rtx read_rtx ();
-extern rtx gen_reg_rtx ();
-extern rtx gen_label_rtx ();
-extern rtx gen_inline_header_rtx ();
-extern rtx gen_lowpart_common ();
-extern rtx gen_lowpart ();
-extern rtx gen_lowpart_if_possible ();
-extern rtx operand_subword ();
-extern rtx operand_subword_force ();
-extern int subreg_lowpart_p ();
-extern rtx make_safe_from ();
-extern rtx memory_address ();
-extern rtx get_insns ();
-extern rtx get_last_insn ();
-extern rtx get_last_insn_anywhere ();
-extern void start_sequence ();
-extern void push_to_sequence ();
-extern void end_sequence ();
-extern rtx gen_sequence ();
-extern rtx expand_expr ();
-extern rtx output_constant_def ();
-extern rtx immed_real_const ();
-extern rtx immed_real_const_1 ();
-extern rtx immed_double_const ();
-extern rtx force_const_mem ();
-extern rtx get_pool_constant ();
-extern enum machine_mode get_pool_mode ();
-extern int get_pool_offset ();
-extern rtx get_parm_real_loc ();
-extern rtx assign_stack_local ();
-extern rtx assign_stack_temp ();
-extern rtx protect_from_queue ();
-extern void emit_queue ();
-extern rtx emit_move_insn ();
-extern rtx emit_insn_before ();
-extern rtx emit_jump_insn_before ();
-extern rtx emit_call_insn_before ();
-extern rtx emit_barrier_before ();
-extern rtx emit_note_before ();
-extern rtx emit_insn_after ();
-extern rtx emit_jump_insn_after ();
-extern rtx emit_barrier_after ();
-extern rtx emit_label_after ();
-extern rtx emit_note_after ();
-extern rtx emit_line_note_after ();
-extern rtx emit_insn ();
-extern rtx emit_insns ();
-extern rtx emit_insns_before ();
-extern rtx emit_jump_insn ();
-extern rtx emit_call_insn ();
-extern rtx emit_label ();
-extern rtx emit_barrier ();
-extern rtx emit_line_note ();
-extern rtx emit_note ();
-extern rtx emit_line_note_force ();
-extern rtx make_insn_raw ();
-extern rtx previous_insn ();
-extern rtx next_insn ();
-extern rtx prev_nonnote_insn ();
-extern rtx next_nonnote_insn ();
-extern rtx prev_real_insn ();
-extern rtx next_real_insn ();
-extern rtx prev_active_insn ();
-extern rtx next_active_insn ();
-extern rtx prev_label ();
-extern rtx next_label ();
-extern rtx next_cc0_user ();
-extern rtx prev_cc0_setter ();
-extern rtx reg_set_last ();
-extern rtx next_nondeleted_insn ();
-extern enum rtx_code reverse_condition ();
-extern enum rtx_code swap_condition ();
-extern enum rtx_code unsigned_condition ();
-extern enum rtx_code signed_condition ();
-extern rtx find_equiv_reg ();
-extern rtx squeeze_notes ();
-extern rtx delete_insn ();
-extern void delete_jump ();
-extern rtx get_label_before ();
-extern rtx get_label_after ();
-extern rtx follow_jumps ();
-extern rtx adj_offsettable_operand ();
-extern rtx try_split ();
-extern rtx split_insns ();
-extern rtx simplify_unary_operation (), simplify_binary_operation ();
-extern rtx simplify_ternary_operation (), simplify_relational_operation ();
-extern rtx nonlocal_label_rtx_list ();
+#endif
+
+#if 0
+/* At present, don't prototype xrealloc, since all of the callers don't
+ cast their pointers to char *, and all of the xrealloc's don't use
+ void * yet. */
+extern char *xrealloc PROTO((void *, unsigned));
+#else
+extern char *xrealloc ();
+#endif
+
+extern char *xmalloc PROTO((unsigned));
+extern char *oballoc PROTO((int));
+extern char *permalloc PROTO((int));
+extern void free PROTO((void *));
+extern rtx rtx_alloc PROTO((RTX_CODE));
+extern rtvec rtvec_alloc PROTO((int));
+extern rtx find_reg_note PROTO((rtx, enum reg_note, rtx));
+extern rtx find_regno_note PROTO((rtx, enum reg_note, int));
+extern HOST_WIDE_INT get_integer_term PROTO((rtx));
+extern rtx get_related_value PROTO((rtx));
+extern rtx single_set PROTO((rtx));
+extern rtx find_last_value PROTO((rtx, rtx *, rtx));
+extern rtx copy_rtx PROTO((rtx));
+extern rtx copy_rtx_if_shared PROTO((rtx));
+extern rtx copy_most_rtx PROTO((rtx, rtx));
+extern rtx replace_rtx PROTO((rtx, rtx, rtx));
+extern rtvec gen_rtvec_v PROTO((int, rtx *));
+extern rtx gen_reg_rtx PROTO((enum machine_mode));
+extern rtx gen_label_rtx PROTO((void));
+extern rtx gen_inline_header_rtx PROTO((rtx, rtx, int, int, int, int, int, int, rtx, int, int, rtvec, rtx));
+extern rtx gen_lowpart_common PROTO((enum machine_mode, rtx));
+extern rtx gen_lowpart PROTO((enum machine_mode, rtx));
+extern rtx gen_lowpart_if_possible PROTO((enum machine_mode, rtx));
+extern rtx operand_subword PROTO((rtx, int, int, enum machine_mode));
+extern rtx operand_subword_force PROTO((rtx, int, enum machine_mode));
+extern int subreg_lowpart_p PROTO((rtx));
+extern rtx make_safe_from PROTO((rtx, rtx));
+extern rtx memory_address PROTO((enum machine_mode, rtx));
+extern rtx get_insns PROTO((void));
+extern rtx get_last_insn PROTO((void));
+extern rtx get_last_insn_anywhere PROTO((void));
+extern void start_sequence PROTO((void));
+extern void push_to_sequence PROTO((rtx));
+extern void end_sequence PROTO((void));
+extern rtx gen_sequence PROTO((void));
+extern rtx immed_double_const PROTO((HOST_WIDE_INT, HOST_WIDE_INT, enum machine_mode));
+extern rtx force_const_mem PROTO((enum machine_mode, rtx));
+extern rtx force_reg PROTO((enum machine_mode, rtx));
+extern rtx get_pool_constant PROTO((rtx));
+extern enum machine_mode get_pool_mode PROTO((rtx));
+extern int get_pool_offset PROTO((rtx));
+extern rtx assign_stack_local PROTO((enum machine_mode, int, int));
+extern rtx assign_stack_temp PROTO((enum machine_mode, int, int));
+extern rtx protect_from_queue PROTO((rtx, int));
+extern void emit_queue PROTO((void));
+extern rtx emit_move_insn PROTO((rtx, rtx));
+extern rtx emit_insn_before PROTO((rtx, rtx));
+extern rtx emit_jump_insn_before PROTO((rtx, rtx));
+extern rtx emit_call_insn_before PROTO((rtx, rtx));
+extern rtx emit_barrier_before PROTO((rtx));
+extern rtx emit_note_before PROTO((int, rtx));
+extern rtx emit_insn_after PROTO((rtx, rtx));
+extern rtx emit_jump_insn_after PROTO((rtx, rtx));
+extern rtx emit_barrier_after PROTO((rtx));
+extern rtx emit_label_after PROTO((rtx, rtx));
+extern rtx emit_note_after PROTO((int, rtx));
+extern rtx emit_line_note_after PROTO((char *, int, rtx));
+extern rtx emit_insn PROTO((rtx));
+extern rtx emit_insns PROTO((rtx));
+extern rtx emit_insns_before PROTO((rtx, rtx));
+extern rtx emit_jump_insn PROTO((rtx));
+extern rtx emit_call_insn PROTO((rtx));
+extern rtx emit_label PROTO((rtx));
+extern rtx emit_barrier PROTO((void));
+extern rtx emit_line_note PROTO((char *, int));
+extern rtx emit_note PROTO((char *, int));
+extern rtx emit_line_note_force PROTO((char *, int));
+extern rtx make_insn_raw PROTO((rtx));
+extern rtx previous_insn PROTO((rtx));
+extern rtx next_insn PROTO((rtx));
+extern rtx prev_nonnote_insn PROTO((rtx));
+extern rtx next_nonnote_insn PROTO((rtx));
+extern rtx prev_real_insn PROTO((rtx));
+extern rtx next_real_insn PROTO((rtx));
+extern rtx prev_active_insn PROTO((rtx));
+extern rtx next_active_insn PROTO((rtx));
+extern rtx prev_label PROTO((rtx));
+extern rtx next_label PROTO((rtx));
+extern rtx next_cc0_user PROTO((rtx));
+extern rtx prev_cc0_setter PROTO((rtx));
+extern rtx reg_set_last PROTO((rtx, rtx));
+extern rtx next_nondeleted_insn PROTO((rtx));
+extern enum rtx_code reverse_condition PROTO((enum rtx_code));
+extern enum rtx_code swap_condition PROTO((enum rtx_code));
+extern enum rtx_code unsigned_condition PROTO((enum rtx_code));
+extern enum rtx_code signed_condition PROTO((enum rtx_code));
+extern rtx find_equiv_reg PROTO((rtx, rtx, enum reg_class, int, short *, int, enum machine_mode));
+extern rtx squeeze_notes PROTO((rtx, rtx));
+extern rtx delete_insn PROTO((rtx));
+extern void delete_jump PROTO((rtx));
+extern rtx get_label_before PROTO((rtx));
+extern rtx get_label_after PROTO((rtx));
+extern rtx follow_jumps PROTO((rtx));
+extern rtx adj_offsettable_operand PROTO((rtx, int));
+extern rtx try_split PROTO((rtx, rtx, int));
+extern rtx split_insns PROTO((rtx, rtx));
+extern rtx simplify_unary_operation PROTO((enum rtx_code, enum machine_mode, rtx, enum machine_mode));
+extern rtx simplify_binary_operation PROTO((enum rtx_code, enum machine_mode, rtx, rtx));
+extern rtx simplify_ternary_operation PROTO((enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx));
+extern rtx simplify_relational_operation PROTO((enum rtx_code, enum machine_mode, rtx, rtx));
+extern rtx nonlocal_label_rtx_list PROTO((void));
+extern rtx gen_move_insn PROTO((rtx, rtx));
+extern rtx gen_jump PROTO((rtx));
+extern rtx gen_beq PROTO((rtx));
+extern rtx gen_bge PROTO((rtx));
+extern rtx gen_ble PROTO((rtx));
+extern rtx eliminate_constant_term PROTO((rtx, rtx *));
/* Maximum number of parallel sets and clobbers in any insn in this fn.
Always at least 3, since the combiner could put that many togetherm
@@ -687,16 +732,13 @@ extern rtx nonlocal_label_rtx_list ();
extern int max_parallel;
-extern int asm_noperands ();
-extern char *decode_asm_operands ();
+extern int asm_noperands PROTO((rtx));
+extern char *decode_asm_operands PROTO((rtx, rtx *, rtx **, char **, enum machine_mode *));
-#ifdef BITS_PER_WORD
-/* Conditional is to detect when config.h has been included. */
-extern enum reg_class reg_preferred_class ();
-extern enum reg_class reg_alternate_class ();
-#endif
+extern enum reg_class reg_preferred_class PROTO((int));
+extern enum reg_class reg_alternate_class PROTO((int));
-extern rtx get_first_nonparm_insn ();
+extern rtx get_first_nonparm_insn PROTO((void));
/* Standard pieces of rtx, to be substituted directly into things. */
extern rtx pc_rtx;
@@ -773,8 +815,27 @@ extern rtx virtual_outgoing_args_rtx;
#define LAST_VIRTUAL_REGISTER ((FIRST_VIRTUAL_REGISTER) + 3)
-extern rtx find_next_ref ();
-extern rtx *find_single_use ();
+extern rtx find_next_ref PROTO((rtx, rtx));
+extern rtx *find_single_use PROTO((rtx, rtx, rtx *));
+
+/* It is hard to write the prototype for expand_expr, since it needs
+ expr.h to be included for the enumeration. */
+
+extern rtx expand_expr ();
+extern rtx immed_real_const_1();
+
+#ifdef TREE_CODE
+/* rtl.h and tree.h were included. */
+extern rtx output_constant_def PROTO((tree));
+extern rtx immed_real_const PROTO((tree));
+extern rtx immed_real_const_1 PROTO((REAL_VALUE_TYPE, enum machine_mode));
+extern tree make_tree PROTO((tree, rtx));
+
+#else
+extern rtx output_constant_def ();
+extern rtx immed_real_const ();
+extern rtx immed_real_const_1 ();
+#endif
/* Define a default value for STORE_FLAG_VALUE. */