Add prototypes file.

From-SVN: r30460
This commit is contained in:
Nick Clifton 1999-11-09 16:45:49 +00:00 committed by Nick Clifton
parent 56e2e7627e
commit eb3921e89a
6 changed files with 195 additions and 187 deletions

View File

@ -1,3 +1,12 @@
Tue Nov 9 16:43:00 1999 Nick Clifton <nickc@cygnus.com>
* config/arm/arm-protos.h: New file: Prototypes for functions
defined in arm.c and pe.c.
* config/arm/arm.h: Fix compile time warnings.
* config/arm/arm.c: Fix compile time warnings.
* config/arm/pe.h: Fix compile time warnings.
* config/arm/aout.h: Fix compile time warnings.
Tue Nov 9 14:55:44 1999 Nick Clifton <nickc@cygnus.com>
* config/m32r/m32r-protos.h: New file: Prototypes for functions

View File

@ -37,8 +37,8 @@ Boston, MA 02111-1307, USA. */
}
#endif
#define ASM_APP_ON ""
#define ASM_APP_OFF ""
#define ASM_APP_ON " "
#define ASM_APP_OFF " "
/* Switch to the text or data segment. */
#define TEXT_SECTION_ASM_OP ".text"

155
gcc/config/arm/arm-protos.h Normal file
View File

@ -0,0 +1,155 @@
/* Prototypes for exported functions defined in arm.c and pe.c
Copyright (C) 1999 Free Software Foundation, Inc.
Contributed by Richard Earnshaw (rearnsha@arm.com)
Minor hacks by Nick Clifton (nickc@cygnus.com)
This file is part of GNU CC.
GNU CC 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,
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
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
extern void arm_expand_prologue PROTO ((void));
extern void arm_finalize_pic PROTO ((void));
extern char * arm_output_epilogue PROTO ((void));
extern void arm_override_options PROTO ((void));
extern void arm_poke_function_name PROTO ((FILE *, char *));
extern int arm_process_pragma PROTO ((int (*)(void), void (*) (int), char *));
extern int arm_regno_class PROTO ((int));
extern int arm_volatile_func PROTO ((void));
extern int const_ok_for_arm PROTO ((HOST_WIDE_INT));
extern void output_arm_prologue PROTO ((FILE *, int));
extern void output_ascii_pseudo_op PROTO ((FILE *, unsigned char *, int));
extern void output_func_epilogue PROTO ((int));
extern void output_func_prologue PROTO ((FILE *, int));
extern int use_return_insn PROTO ((int));
#if defined AOF_ASSEMBLER
extern void aof_add_import PROTO ((char *));
extern char * aof_data_section PROTO ((void));
extern void aof_delete_import PROTO ((char *));
extern void aof_dump_imports PROTO ((FILE *));
extern void aof_dump_pic_table PROTO ((FILE *));
extern char * aof_text_section PROTO ((void));
#endif /* AOF_ASSEMBLER */
/* Defined in pe.c */
extern int arm_dllexport_name_p PROTO ((char *));
extern int arm_dllimport_name_p PROTO ((char *));
#define Mmode enum machine_mode
#ifdef TREE_CODE
extern int arm_comp_type_attributes PROTO ((tree, tree));
extern int arm_return_in_memory PROTO ((tree));
extern int arm_valid_machine_decl_attribute PROTO ((tree, tree, tree));
extern int arm_valid_type_attribute_p PROTO ((tree, tree, tree, tree));
/* Defined in pe.c */
extern int arm_dllexport_p PROTO ((tree));
extern int arm_dllimport_p PROTO ((tree));
extern void arm_mark_dllexport PROTO ((tree));
extern void arm_mark_dllimport PROTO ((tree));
extern void arm_pe_encode_section_info PROTO ((tree));
extern tree arm_pe_merge_machine_decl_attributes PROTO ((tree, tree));
extern void arm_pe_unique_section PROTO ((tree, int));
extern int arm_pe_valid_machine_decl_attribute PROTO ((tree, tree, tree, tree));
#endif
#ifdef RTX_CODE
extern int adjacent_mem_locations PROTO ((rtx, rtx));
extern char * arithmetic_instr PROTO ((rtx, int));
extern int arm_adjust_cost PROTO ((rtx, rtx, rtx, int));
extern RTX_CODE arm_canonicalize_comparison PROTO ((RTX_CODE, rtx *));
extern int arm_debugger_arg_offset PROTO ((int, rtx));
extern void arm_final_prescan_insn PROTO ((rtx));
extern rtx arm_gen_load_multiple PROTO ((int, int, rtx, int, int, int, int, int));
extern int arm_gen_movstrqi PROTO ((rtx *));
extern rtx arm_gen_store_multiple PROTO ((int, int, rtx, int, int, int, int, int));
extern void arm_print_operand PROTO ((FILE *, rtx, int));
extern void arm_reload_in_hi PROTO ((rtx *));
extern void arm_reload_out_hi PROTO ((rtx *));
extern void arm_reorg PROTO ((rtx));
extern int arm_rtx_costs PROTO ((rtx, RTX_CODE));
extern Mmode arm_select_cc_mode PROTO ((RTX_CODE, rtx, rtx));
extern int const_double_rtx_ok_for_fpu PROTO ((rtx));
extern int const_ok_for_arm PROTO ((HOST_WIDE_INT));
extern char * emit_ldm_seq PROTO ((rtx *, int));
extern char * emit_stm_seq PROTO ((rtx *, int));
extern char * fp_immediate_constant PROTO ((rtx));
extern rtx gen_compare_reg PROTO ((RTX_CODE, rtx, rtx));
extern rtx gen_rotated_half_load PROTO ((rtx));
extern int is_pic PROTO ((rtx));
extern int label_mentioned_p PROTO ((rtx));
extern int legitimate_pic_operand_p PROTO ((rtx));
extern int load_multiple_sequence PROTO ((rtx *, int, int *, int *, HOST_WIDE_INT *));
extern RTX_CODE minmax_code PROTO ((rtx));
extern int neg_const_double_rtx_ok_for_fpu PROTO ((rtx));
extern char * output_add_immediate PROTO ((rtx *));
extern char * output_call PROTO ((rtx *));
extern char * output_call_mem PROTO ((rtx *));
extern char * output_mov_double_arm_from_fpu PROTO ((rtx *));
extern char * output_mov_double_fpu_from_arm PROTO ((rtx *));
extern char * output_mov_immediate PROTO ((rtx *));
extern char * output_mov_long_double_arm_from_arm PROTO ((rtx *));
extern char * output_mov_long_double_arm_from_fpu PROTO ((rtx *));
extern char * output_mov_long_double_fpu_from_arm PROTO ((rtx *));
extern char * output_move_double PROTO ((rtx *));
extern char * output_return_instruction PROTO ((rtx, int, int));
extern int store_multiple_sequence PROTO ((rtx *, int, int *, int *, HOST_WIDE_INT *));
extern int symbol_mentioned_p PROTO ((rtx));
#if defined AOF_ASSEMBLER
extern rtx aof_pic_entry PROTO ((rtx));
#endif /* AOF_ASSEMBLER */
#ifdef HAVE_MACHINE_MODES
extern int alignable_memory_operand PROTO ((rtx, Mmode));
extern int arm_add_operand PROTO ((rtx, Mmode));
extern int arm_go_if_legitimate_address PROTO ((Mmode, rtx));
extern int arm_not_operand PROTO ((rtx, Mmode));
extern int arm_reload_memory_operand PROTO ((rtx, Mmode));
extern int arm_rhs_operand PROTO ((rtx, Mmode));
extern int arm_rhsm_operand PROTO ((rtx, Mmode));
extern Mmode arm_select_cc_mode PROTO ((RTX_CODE, rtx, rtx));
extern int arm_split_constant PROTO ((RTX_CODE, Mmode, HOST_WIDE_INT, rtx, rtx, int));
extern int bad_signed_byte_operand PROTO ((rtx, Mmode));
extern int cc_register PROTO ((rtx, Mmode));
extern int const_shift_operand PROTO ((rtx, Mmode));
extern int di_operand PROTO ((rtx, Mmode));
extern int dominant_cc_register PROTO ((rtx, Mmode));
extern int equality_operator PROTO ((rtx, Mmode));
extern int f_register_operand PROTO ((rtx, Mmode));
extern int fpu_add_operand PROTO ((rtx, Mmode));
extern int fpu_rhs_operand PROTO ((rtx, Mmode));
extern int index_operand PROTO ((rtx, Mmode));
extern rtx legitimize_pic_address PROTO ((rtx, Mmode, rtx));
extern int load_multiple_operation PROTO ((rtx, Mmode));
extern int logical_binary_operator PROTO ((rtx, Mmode));
extern int minmax_operator PROTO ((rtx, Mmode));
extern int multi_register_push PROTO ((rtx, Mmode));
extern int nonimmediate_di_operand PROTO ((rtx, Mmode));
extern int nonimmediate_soft_df_operand PROTO ((rtx, Mmode));
extern int offsettable_memory_operand PROTO ((rtx, Mmode));
extern int power_of_two_operand PROTO ((rtx, Mmode));
extern int reg_or_int_operand PROTO ((rtx, Mmode));
extern int s_register_operand PROTO ((rtx, Mmode));
extern int shift_operator PROTO ((rtx, Mmode));
extern int shiftable_operator PROTO ((rtx, Mmode));
extern int soft_df_operand PROTO ((rtx, Mmode));
extern int store_multiple_operation PROTO ((rtx, Mmode));
#if defined TREE_CODE
extern rtx arm_function_arg PROTO ((CUMULATIVE_ARGS *, Mmode, tree, int));
extern void arm_init_cumulative_args PROTO ((CUMULATIVE_ARGS *, tree, rtx, int));
#endif /* TREE_CODE */
#endif /* HAVE_MACHINE_MODES */
#endif /* RTX_CODE */
#undef Mmode

View File

@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */
#include "toplev.h"
#include "recog.h"
#include "ggc.h"
#include "arm-protos.h"
/* The maximum number of insns skipped which will be conditionalised if
possible. */
@ -48,32 +49,32 @@ static int max_insns_skipped = 5;
extern FILE * asm_out_file;
/* Some function declarations. */
static HOST_WIDE_INT int_log2 PROTO ((HOST_WIDE_INT));
static char * output_multi_immediate PROTO ((rtx *, char *, char *, int,
HOST_WIDE_INT));
static int arm_gen_constant PROTO ((enum rtx_code, enum machine_mode,
HOST_WIDE_INT, rtx, rtx, int, int));
static int arm_naked_function_p PROTO ((tree));
static void init_fpa_table PROTO ((void));
static enum machine_mode select_dominance_cc_mode PROTO ((rtx, rtx,
HOST_WIDE_INT));
static HOST_WIDE_INT add_minipool_constant PROTO ((rtx, enum machine_mode));
static void dump_minipool PROTO ((rtx));
static rtx find_barrier PROTO ((rtx, int));
static void push_minipool_fix PROTO ((rtx, int, rtx *, enum machine_mode,
rtx));
static void push_minipool_barrier PROTO ((rtx, int));
static void note_invalid_constants PROTO ((rtx, int));
static char * fp_const_from_val PROTO ((REAL_VALUE_TYPE *));
static int eliminate_lr2ip PROTO ((rtx *));
static char * shift_op PROTO ((rtx, HOST_WIDE_INT *));
static int pattern_really_clobbers_lr PROTO ((rtx));
static int function_really_clobbers_lr PROTO ((rtx));
static void emit_multi_reg_push PROTO ((int));
static void emit_sfm PROTO ((int, int));
#ifndef Mmode
#define Mmode enum machine_mode
#endif
static HOST_WIDE_INT int_log2 PROTO ((HOST_WIDE_INT));
static char * output_multi_immediate PROTO ((rtx *, char *, char *, int, HOST_WIDE_INT));
static int arm_gen_constant PROTO ((enum rtx_code, Mmode, HOST_WIDE_INT, rtx, rtx, int, int));
static int arm_naked_function_p PROTO ((tree));
static void init_fpa_table PROTO ((void));
static enum machine_mode select_dominance_cc_mode PROTO ((rtx, rtx, HOST_WIDE_INT));
static HOST_WIDE_INT add_minipool_constant PROTO ((rtx, Mmode));
static void dump_minipool PROTO ((rtx));
static rtx find_barrier PROTO ((rtx, int));
static void push_minipool_fix PROTO ((rtx, int, rtx *, Mmode, rtx));
static void push_minipool_barrier PROTO ((rtx, int));
static void note_invalid_constants PROTO ((rtx, int));
static char * fp_const_from_val PROTO ((REAL_VALUE_TYPE *));
static int eliminate_lr2ip PROTO ((rtx *));
static char * shift_op PROTO ((rtx, HOST_WIDE_INT *));
static int pattern_really_clobbers_lr PROTO ((rtx));
static int function_really_clobbers_lr PROTO ((rtx));
static void emit_multi_reg_push PROTO ((int));
static void emit_sfm PROTO ((int, int));
static enum arm_cond_code get_arm_condition_code PROTO ((rtx));
static int const_ok_for_op RTX_CODE_PROTO ((HOST_WIDE_INT, Rcode));
static void arm_add_gc_roots PROTO ((void));
static int const_ok_for_op PROTO ((HOST_WIDE_INT, enum rtx_code));
static void arm_add_gc_roots PROTO ((void));
/* True if we are currently building a constant table. */
int making_const_table;
@ -5928,8 +5929,7 @@ arm_output_epilogue ()
}
void
output_func_epilogue (f, frame_size)
FILE *f ATTRIBUTE_UNUSED;
output_func_epilogue (frame_size)
int frame_size;
{
if (use_return_insn (FALSE) && return_used_this_function

View File

@ -1275,7 +1275,7 @@ enum reg_class
/* Generate the assembly code for function exit. */
#define FUNCTION_EPILOGUE(STREAM, SIZE) \
output_func_epilogue (STREAM, SIZE)
output_func_epilogue (SIZE)
/* Determine if the epilogue should be output as RTL.
You should override this if you define FUNCTION_EXTRA_EPILOGUE. */
@ -2200,156 +2200,4 @@ extern struct rtx_def * arm_compare_op1;
when running in 32 bit mode. */ \
((!TARGET_APCS_32) ? (GEN_INT (0x03fffffc)) : (GEN_INT (0xffffffff)))
/* The remainder of this file is only needed for building the compiler
itself, not for the collateral. */
#ifdef HAVE_CONFIG_H
/* Prototypes for functions in arm.c */
#ifdef BUFSIZ /* stdio.h has been included, ok to use FILE * */
#define STDIO_PROTO(ARGS) PROTO (ARGS)
#else
#define STDIO_PROTO(ARGS) ()
#endif
#ifndef TREE_CODE
union tree_node;
#define Tree union tree_node *
#else
#define Tree tree
#endif
#ifndef RTX_CODE
struct rtx_def;
#define Rtx struct rtx_def *
#else
#define Rtx rtx
#endif
#ifndef HOST_WIDE_INT
#include "hwint.h"
#endif
#ifndef HAVE_MACHINE_MODES
#include "machmode.h"
#endif
#define Mmode enum machine_mode
#ifdef RTX_CODE
#define RTX_CODE_PROTO(ARGS) PROTO (ARGS)
#else
#define RTX_CODE_PROTO(ARGS) ()
#endif
#define Rcode enum rtx_code
void arm_override_options PROTO ((void));
int use_return_insn PROTO ((int));
int const_ok_for_arm PROTO ((HOST_WIDE_INT));
int arm_split_constant RTX_CODE_PROTO ((Rcode, Mmode, HOST_WIDE_INT, Rtx,
Rtx, int));
Rcode arm_canonicalize_comparison RTX_CODE_PROTO ((Rcode, Rtx *));
int arm_return_in_memory PROTO ((Tree));
int legitimate_pic_operand_p PROTO ((Rtx));
Rtx legitimize_pic_address PROTO ((Rtx, Mmode, Rtx));
int is_pic PROTO ((Rtx));
void arm_finalize_pic PROTO ((void));
int arm_rtx_costs RTX_CODE_PROTO ((Rtx, Rcode));
int arm_adjust_cost PROTO ((Rtx, Rtx, Rtx, int));
int const_double_rtx_ok_for_fpu PROTO ((Rtx));
int neg_const_double_rtx_ok_for_fpu PROTO ((Rtx));
int s_register_operand PROTO ((Rtx, Mmode));
int f_register_operand PROTO ((Rtx, Mmode));
int reg_or_int_operand PROTO ((Rtx, Mmode));
int reload_memory_operand PROTO ((Rtx, Mmode));
int arm_rhs_operand PROTO ((Rtx, Mmode));
int arm_rhsm_operand PROTO ((Rtx, Mmode));
int arm_add_operand PROTO ((Rtx, Mmode));
int arm_not_operand PROTO ((Rtx, Mmode));
int offsettable_memory_operand PROTO ((Rtx, Mmode));
int alignable_memory_operand PROTO ((Rtx, Mmode));
int bad_signed_byte_operand PROTO ((Rtx, Mmode));
int fpu_rhs_operand PROTO ((Rtx, Mmode));
int fpu_add_operand PROTO ((Rtx, Mmode));
int power_of_two_operand PROTO ((Rtx, Mmode));
int di_operand PROTO ((Rtx, Mmode));
int soft_df_operand PROTO ((Rtx, Mmode));
int index_operand PROTO ((Rtx, Mmode));
int const_shift_operand PROTO ((Rtx, Mmode));
int shiftable_operator PROTO ((Rtx, Mmode));
int logical_binary_operator PROTO ((Rtx, Mmode));
int shift_operator PROTO ((Rtx, Mmode));
int equality_operator PROTO ((Rtx, Mmode));
int minmax_operator PROTO ((Rtx, Mmode));
int cc_register PROTO ((Rtx, Mmode));
int dominant_cc_register PROTO ((Rtx, Mmode));
int symbol_mentioned_p PROTO ((Rtx));
int label_mentioned_p PROTO ((Rtx));
Rcode minmax_code PROTO ((Rtx));
int adjacent_mem_locations PROTO ((Rtx, Rtx));
int load_multiple_operation PROTO ((Rtx, Mmode));
int store_multiple_operation PROTO ((Rtx, Mmode));
int load_multiple_sequence PROTO ((Rtx *, int, int *, int *,
HOST_WIDE_INT *));
char * emit_ldm_seq PROTO ((Rtx *, int));
int store_multiple_sequence PROTO ((Rtx *, int, int *, int *,
HOST_WIDE_INT *));
char * emit_stm_seq PROTO ((Rtx *, int));
int arm_valid_machine_decl_attribute PROTO ((Tree, Tree, Tree));
Rtx arm_gen_load_multiple PROTO ((int, int, Rtx, int, int, int, int, int));
Rtx arm_gen_store_multiple PROTO ((int, int, Rtx, int, int, int, int, int));
int arm_gen_movstrqi PROTO ((Rtx *));
Rtx gen_rotated_half_load PROTO ((Rtx));
Mmode arm_select_cc_mode RTX_CODE_PROTO ((Rcode, Rtx, Rtx));
Rtx gen_compare_reg RTX_CODE_PROTO ((Rcode, Rtx, Rtx, int));
void arm_reload_in_hi PROTO ((Rtx *));
void arm_reload_out_hi PROTO ((Rtx *));
void arm_reorg PROTO ((Rtx));
char * fp_immediate_constant PROTO ((Rtx));
void print_multi_reg STDIO_PROTO ((FILE *, char *, int, int));
char * output_call PROTO ((Rtx *));
char * output_call_mem PROTO ((Rtx *));
char * output_mov_long_double_fpu_from_arm PROTO ((Rtx *));
char * output_mov_long_double_arm_from_fpu PROTO ((Rtx *));
char * output_mov_long_double_arm_from_arm PROTO ((Rtx *));
char * output_mov_double_fpu_from_arm PROTO ((Rtx *));
char * output_mov_double_arm_from_fpu PROTO ((Rtx *));
char * output_move_double PROTO ((Rtx *));
char * output_mov_immediate PROTO ((Rtx *));
char * output_add_immediate PROTO ((Rtx *));
char * arithmetic_instr PROTO ((Rtx, int));
void output_ascii_pseudo_op STDIO_PROTO ((FILE *, unsigned char *, int));
char * output_return_instruction PROTO ((Rtx, int, int));
int arm_volatile_func PROTO ((void));
void arm_poke_function_name STDIO_PROTO ((FILE *, char *));
void output_func_prologue STDIO_PROTO ((FILE *, int));
void output_func_epilogue STDIO_PROTO ((FILE *, int));
void arm_expand_prologue PROTO ((void));
char * arm_output_epilogue PROTO ((void));
void arm_print_operand STDIO_PROTO ((FILE *, Rtx, int));
void arm_final_prescan_insn PROTO ((Rtx));
int short_branch PROTO ((int, int));
void assemble_align PROTO((int)); /* Used in arm.md, but defined in output.c */
int multi_register_push PROTO ((Rtx, Mmode));
#ifdef AOF_ASSEMBLER
Rtx aof_pic_entry PROTO ((Rtx));
void aof_dump_pic_table STDIO_PROTO ((FILE *));
char * aof_text_section PROTO ((void));
char * aof_data_section PROTO ((void));
void aof_add_import PROTO ((char *));
void aof_delete_import PROTO ((char *));
void aof_dump_imports STDIO_PROTO ((FILE *));
#endif
/* Define in pe.c */
int arm_pe_return_in_memory PROTO ((Tree));
int arm_dllexport_p PROTO ((Tree));
int arm_dllimport_p PROTO ((Tree));
int arm_dllexport_name_p PROTO ((char *));
int arm_dllimport_name_p PROTO ((char *));
#endif /* HAVE_CONFIG_H */
#endif /* __ARM_H__ */

View File

@ -89,7 +89,6 @@ Boston, MA 02111-1307, USA. */
/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
is a valid machine specific attribute for DECL.
The attributes in ATTRIBUTES have previously been assigned to DECL. */
extern int arm_pe_valid_machine_decl_attribute ();
#undef VALID_MACHINE_DECL_ATTRIBUTE
#define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \
arm_pe_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
@ -99,12 +98,10 @@ arm_pe_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
TYPE1 and TYPE2 are incompatible, one if they are compatible,
and two if they are nearly compatible (which causes a warning to be
generated). */
extern int arm_pe_comp_type_attributes ();
#define COMP_TYPE_ATTRIBUTES(TYPE1, TYPE2) \
arm_pe_comp_type_attributes ((TYPE1), (TYPE2))
#endif
extern union tree_node *arm_pe_merge_machine_decl_attributes ();
#define MERGE_MACHINE_DECL_ATTRIBUTES(OLD, NEW) \
arm_pe_merge_machine_decl_attributes ((OLD), (NEW))
@ -115,7 +112,6 @@ arm_pe_merge_machine_decl_attributes ((OLD), (NEW))
This is also needed to implement one-only vtables: they go into their own
section and we need to set DECL_SECTION_NAME so we do that here.
Note that we can be called twice on the same decl. */
extern void arm_pe_encode_section_info ();
#undef ENCODE_SECTION_INFO
#define ENCODE_SECTION_INFO(DECL) \
arm_pe_encode_section_info (DECL)
@ -149,7 +145,7 @@ arm_pe_encode_section_info (DECL)
#define MULTIPLE_SYMBOL_SPACES
#define UNIQUE_SECTION_P(DECL) DECL_ONE_ONLY (DECL)
extern void arm_pe_unique_section ();
#define UNIQUE_SECTION(DECL,RELOC) arm_pe_unique_section (DECL, RELOC)
#define SUPPORTS_ONE_ONLY 1