Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
and Herman Ten Brugge (Haj.Ten.Brugge@net.HCC.nl).
- This file is part of GNU CC.
+ This file is part of GCC.
- GNU CC is free software; you can redistribute it and/or modify
+ GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
- GNU CC is distributed in the hope that it will be useful,
+ GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with GNU CC; see the file COPYING. If not, write to
+ along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifndef GCC_C4X_PROTOS_H
+#define GCC_C4X_PROTOS_H
+
extern void c4x_override_options PARAMS ((void));
extern void c4x_optimization_options PARAMS ((int, int));
extern int c4x_null_epilogue_p PARAMS ((void));
-extern int c4x_handle_pragma PARAMS ((int (* p_getc) (void),
- void (* p_ungetc) (int),
- char *));
-
extern void c4x_global_label (const char *);
extern void c4x_external_ref (const char *);
extern void c4x_file_end (FILE *);
#ifdef TREE_CODE
-extern void c4x_set_default_attributes PARAMS ((tree, tree *));
-
extern void c4x_function_arg_advance PARAMS ((CUMULATIVE_ARGS *,
enum machine_mode, tree, int));
enum machine_mode, tree,
int));
-extern void c4x_encode_section_info PARAMS ((tree));
-
-extern int c4x_valid_type_attribute_p PARAMS ((tree, tree, tree, tree));
#endif /* TREE_CODE */
#if defined(RTX_CODE) && defined(TREE_CODE)
extern void c4x_init_cumulative_args PARAMS ((CUMULATIVE_ARGS *c, tree, rtx));
-extern void c4x_va_start PARAMS ((int, tree, rtx));
-
extern struct rtx_def *c4x_va_arg PARAMS ((tree, tree));
+
+extern rtx c4x_expand_builtin PARAMS ((tree, rtx, rtx,
+ enum machine_mode, int));
+
+extern void c4x_init_builtins PARAMS ((void));
+
#endif /* TREE_CODE and RTX_CODE*/
extern int c4x_hard_regno_mode_ok PARAMS ((unsigned int, enum machine_mode));
+extern int c4x_hard_regno_rename_ok PARAMS ((unsigned int, unsigned int));
+
extern struct rtx_def *c4x_legitimize_address PARAMS ((rtx,
enum machine_mode));
-extern struct rtx_def *c4x_legitimize_reload_address PARAMS ((rtx, enum machine_mode, rtx));
-
-extern int c4x_address_cost PARAMS ((rtx));
-
extern void c4x_print_operand PARAMS ((FILE *, rtx, int));
extern void c4x_print_operand_address PARAMS ((FILE *, rtx));
extern int c4x_address_conflict PARAMS ((rtx, rtx, int, int));
-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_rpts_p PARAMS ((rtx, rtx));
+extern int c4x_check_laj_p PARAMS ((rtx));
+
extern int c4x_autoinc_operand PARAMS ((rtx, enum machine_mode));
extern int any_operand PARAMS ((rtx, enum machine_mode));
extern int tsrc_operand PARAMS ((rtx, enum machine_mode));
+extern int nonimmediate_src_operand PARAMS ((rtx, enum machine_mode));
+
+extern int nonimmediate_lsrc_operand PARAMS ((rtx, enum machine_mode));
+
extern int addr_reg_operand PARAMS ((rtx, enum machine_mode));
extern int index_reg_operand PARAMS ((rtx, enum machine_mode));
extern int valid_parallel_operands_6 PARAMS ((rtx *, enum machine_mode));
-extern rtx smulhi3_libfunc;
-extern rtx umulhi3_libfunc;
-extern rtx fix_truncqfhi2_libfunc;
-extern rtx fixuns_truncqfhi2_libfunc;
-extern rtx fix_trunchfhi2_libfunc;
-extern rtx fixuns_trunchfhi2_libfunc;
-extern rtx floathiqf2_libfunc;
-extern rtx floatunshiqf2_libfunc;
-extern rtx floathihf2_libfunc;
-extern rtx floatunshihf2_libfunc;
+extern GTY(()) rtx smulhi3_libfunc;
+extern GTY(()) rtx umulhi3_libfunc;
+extern GTY(()) rtx fix_truncqfhi2_libfunc;
+extern GTY(()) rtx fixuns_truncqfhi2_libfunc;
+extern GTY(()) rtx fix_trunchfhi2_libfunc;
+extern GTY(()) rtx fixuns_trunchfhi2_libfunc;
+extern GTY(()) rtx floathiqf2_libfunc;
+extern GTY(()) rtx floatunshiqf2_libfunc;
+extern GTY(()) rtx floathihf2_libfunc;
+extern GTY(()) rtx floatunshihf2_libfunc;
-extern struct rtx_def *c4x_compare_op0; /* Operand 0 for comparisons. */
-extern struct rtx_def *c4x_compare_op1; /* Operand 1 for comparisons. */
+extern GTY(()) rtx c4x_compare_op0; /* Operand 0 for comparisons. */
+extern GTY(()) rtx c4x_compare_op1; /* Operand 1 for comparisons. */
#endif /* RTX_CODE */
/* Smallest class containing REGNO. */
-extern enum reg_class c4x_regclass_map[];
-extern enum machine_mode c4x_caller_save_map[];
+extern enum reg_class c4x_regclass_map[FIRST_PSEUDO_REGISTER];
+extern enum machine_mode c4x_caller_save_map[FIRST_PSEUDO_REGISTER];
extern int c4x_rpts_cycles; /* Max cycles for RPTS. */
extern int c4x_cpu_version; /* Cpu version C30/31/32/40/44. */
+
+extern void c4x_pr_CODE_SECTION PARAMS ((struct cpp_reader *));
+extern void c4x_pr_DATA_SECTION PARAMS ((struct cpp_reader *));
+extern void c4x_pr_FUNC_IS_PURE PARAMS ((struct cpp_reader *));
+extern void c4x_pr_FUNC_NEVER_RETURNS PARAMS ((struct cpp_reader *));
+extern void c4x_pr_INTERRUPT PARAMS ((struct cpp_reader *));
+extern void c4x_pr_ignored PARAMS ((struct cpp_reader *));
+extern void c4x_init_pragma PARAMS ((int (*) (tree *)));
+
+extern GTY(()) tree code_tree;
+extern GTY(()) tree data_tree;
+extern GTY(()) tree pure_tree;
+extern GTY(()) tree noreturn_tree;
+extern GTY(()) tree interrupt_tree;
+
+#endif /* ! GCC_C4X_PROTOS_H */