Commit 519104fe by Kaveh R. Ghazi Committed by Kaveh Ghazi

pa-protos.h: New file.

        * pa-protos.h: New file.

        * pa.c: Include recog.h and tm_p.h.
        (compute_zdepwi_operands, compute_movstrsi_length,
        remove_useless_addtr_insns, store_reg, load_reg, set_reg_plus_d,
        find_addr_reg, import_milli): Add static prototypes.
        (pa_cpu_string, pa_arch_string): Constify a char*.
        (legitimize_pic_address): Pass argument `mode' to pic_label_operand.
        (read_only_operand): Add argument `mode'.
        (singlemove_string, output_move_double, output_fp_move_double,
        output_block_move, output_and, output_ior, output_ascii,
        remove_useless_addtr_insns, milli_names, output_mul_insn,
        output_div_insn, output_mod_insn, output_arg_descriptor,
        output_cbranch, output_bb, output_bvb, output_dbra, ,
        output_millicode_call, output_call, hppa_encode_label,
        output_parallel_movb, output_parallel_addb): Constify a char*.
        (hppa_va_start): Mark parameter `stdarg_p' with ATTRIBUTE_UNUSED.
        (output_parallel_addb): Remove extra arg to `constrain_operands'

        * pa.h:  Move all prototypes to pa-protos.h.
        (pa_cpu_string, pa_arch_string): Constify a char*.
        (LEGITIMIZE_ADDRESS): Call `symbolic_operand' with mode argument.

        * pa.md: Call `function_label_operand' with mode argument.
        Likewise for `read_only_operand'.
        Fix nesting of parens in call to `symbolic_operand'.

From-SVN: r31331
parent e2d457f1
2000-01-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* pa-protos.h: New file.
* pa.c: Include recog.h and tm_p.h.
(compute_zdepwi_operands, compute_movstrsi_length,
remove_useless_addtr_insns, store_reg, load_reg, set_reg_plus_d,
find_addr_reg, import_milli): Add static prototypes.
(pa_cpu_string, pa_arch_string): Constify a char*.
(legitimize_pic_address): Pass argument `mode' to pic_label_operand.
(read_only_operand): Add argument `mode'.
(singlemove_string, output_move_double, output_fp_move_double,
output_block_move, output_and, output_ior, output_ascii,
remove_useless_addtr_insns, milli_names, output_mul_insn,
output_div_insn, output_mod_insn, output_arg_descriptor,
output_cbranch, output_bb, output_bvb, output_dbra, ,
output_millicode_call, output_call, hppa_encode_label,
output_parallel_movb, output_parallel_addb): Constify a char*.
(hppa_va_start): Mark parameter `stdarg_p' with ATTRIBUTE_UNUSED.
(output_parallel_addb): Remove extra arg to `constrain_operands'
* pa.h: Move all prototypes to pa-protos.h.
(pa_cpu_string, pa_arch_string): Constify a char*.
(LEGITIMIZE_ADDRESS): Call `symbolic_operand' with mode argument.
* pa.md: Call `function_label_operand' with mode argument.
Likewise for `read_only_operand'.
Fix nesting of parens in call to `symbolic_operand'.
2000-01-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* i860-protos.h: New file.
* i860.c: Include tm_p.h. Add static prototypes. Fix compile
......
/* Prototypes for pa.c functions used in the md file & elsewhere.
Copyright (C) 2000 Free Software Foundation, Inc.
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. */
#ifdef RTX_CODE
/* Prototype function used in MACHINE_DEPENDENT_REORG macro. */
extern void pa_reorg PARAMS ((rtx));
/* Prototype function used in various macros. */
extern int symbolic_operand PARAMS ((rtx, enum machine_mode));
/* Used in insn-*.c. */
extern int following_call PARAMS ((rtx));
extern int function_label_operand PARAMS ((rtx, enum machine_mode));
extern int lhs_lshift_cint_operand PARAMS ((rtx, enum machine_mode));
#ifdef TREE_CODE
extern void hppa_va_start PARAMS ((int, tree, rtx));
extern rtx hppa_va_arg PARAMS ((tree, tree));
#endif /* TREE_CODE */
extern rtx hppa_legitimize_address PARAMS ((rtx, rtx, enum machine_mode));
/* Define functions in pa.c and used in insn-output.c. */
extern const char *output_and PARAMS ((rtx *));
extern const char *output_ior PARAMS ((rtx *));
extern const char *output_move_double PARAMS ((rtx *));
extern const char *output_fp_move_double PARAMS ((rtx *));
extern const char *output_block_move PARAMS ((rtx *, int));
extern const char *output_cbranch PARAMS ((rtx *, int, int, int, rtx));
extern const char *output_bb PARAMS ((rtx *, int, int, int, rtx, int));
extern const char *output_bvb PARAMS ((rtx *, int, int, int, rtx, int));
extern const char *output_dbra PARAMS ((rtx *, rtx, int));
extern const char *output_movb PARAMS ((rtx *, rtx, int, int));
extern const char *output_parallel_movb PARAMS ((rtx *, int));
extern const char *output_parallel_addb PARAMS ((rtx *, int));
extern const char *output_call PARAMS ((rtx, rtx));
extern const char *output_millicode_call PARAMS ((rtx, rtx));
extern const char *output_mul_insn PARAMS ((int, rtx));
extern const char *output_div_insn PARAMS ((rtx *, int, rtx));
extern const char *output_mod_insn PARAMS ((int, rtx));
extern const char *singlemove_string PARAMS ((rtx *));
extern void output_arg_descriptor PARAMS ((rtx));
extern void output_global_address PARAMS ((FILE *, rtx, int));
extern void print_operand PARAMS ((FILE *, rtx, int));
extern rtx legitimize_pic_address PARAMS ((rtx, enum machine_mode, rtx));
extern struct rtx_def *gen_cmp_fp PARAMS ((enum rtx_code, rtx, rtx));
extern void hppa_encode_label PARAMS ((rtx, int));
extern int arith11_operand PARAMS ((rtx, enum machine_mode));
extern int symbolic_expression_p PARAMS ((rtx));
extern int hppa_address_cost PARAMS ((rtx));
extern int symbolic_memory_operand PARAMS ((rtx, enum machine_mode));
extern int pa_adjust_cost PARAMS ((rtx, rtx, rtx, int));
extern int pa_adjust_insn_length PARAMS ((rtx, int));
extern int int11_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_cint_move_operand PARAMS ((rtx, enum machine_mode));
extern int arith5_operand PARAMS ((rtx, enum machine_mode));
extern int uint5_operand PARAMS ((rtx, enum machine_mode));
extern int pic_label_operand PARAMS ((rtx, enum machine_mode));
extern int plus_xor_ior_operator PARAMS ((rtx, enum machine_mode));
extern int basereg_operand PARAMS ((rtx, enum machine_mode));
extern int shadd_operand PARAMS ((rtx, enum machine_mode));
extern int arith_operand PARAMS ((rtx, enum machine_mode));
extern int read_only_operand PARAMS ((rtx, enum machine_mode));
extern int move_operand PARAMS ((rtx, enum machine_mode));
extern int and_operand PARAMS ((rtx, enum machine_mode));
extern int ior_operand PARAMS ((rtx, enum machine_mode));
extern int arith32_operand PARAMS ((rtx, enum machine_mode));
extern int uint32_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_nonsymb_mem_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
extern int reg_or_0_or_nonsymb_mem_operand PARAMS ((rtx, enum machine_mode));
extern int pre_cint_operand PARAMS ((rtx, enum machine_mode));
extern int post_cint_operand PARAMS ((rtx, enum machine_mode));
extern int div_operand PARAMS ((rtx, enum machine_mode));
extern int int5_operand PARAMS ((rtx, enum machine_mode));
extern int movb_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int ireg_or_int5_operand PARAMS ((rtx, enum machine_mode));
extern int fmpyaddoperands PARAMS ((rtx *));
extern int fmpysuboperands PARAMS ((rtx *));
extern int call_operand_address PARAMS ((rtx, enum machine_mode));
extern int ior_operand PARAMS ((rtx, enum machine_mode));
extern void emit_bcond_fp PARAMS ((enum rtx_code, rtx));
extern int emit_move_sequence PARAMS ((rtx *, enum machine_mode, rtx));
extern int emit_hpdiv_const PARAMS ((rtx *, int));
extern int is_function_label_plus_const PARAMS ((rtx));
extern int jump_in_call_delay PARAMS ((rtx));
extern enum reg_class secondary_reload_class PARAMS ((enum reg_class,
enum machine_mode, rtx));
/* Declare functions defined in pa.c and used in templates. */
extern struct rtx_def *return_addr_rtx PARAMS ((int, rtx));
extern int fp_reg_operand PARAMS ((rtx, enum machine_mode));
extern int arith_double_operand PARAMS ((rtx, enum machine_mode));
extern int ireg_operand PARAMS ((rtx, enum machine_mode));
extern int lhs_lshift_operand PARAMS ((rtx, enum machine_mode));
extern int pc_or_label_operand PARAMS ((rtx, enum machine_mode));
#ifdef ARGS_SIZE_RTX
/* expr.h defines ARGS_SIZE_RTX and `enum direction' */
extern enum direction function_arg_padding PARAMS ((enum machine_mode, tree));
#endif /* ARGS_SIZE_RTX */
extern int non_hard_reg_operand PARAMS ((rtx, enum machine_mode));
extern int eq_neq_comparison_operator PARAMS ((rtx, enum machine_mode));
extern int insn_refs_are_delayed PARAMS ((rtx));
#endif /* RTX_CODE */
/* Prototype function used in macro CONST_OK_FOR_LETTER_P. */
extern int zdepi_cint_p PARAMS ((unsigned HOST_WIDE_INT));
extern struct rtx_def *hppa_builtin_saveregs PARAMS ((void));
extern void output_deferred_plabels PARAMS ((FILE *));
extern void override_options PARAMS ((void));
extern void output_ascii PARAMS ((FILE *, const unsigned char *, int));
extern void output_function_prologue PARAMS ((FILE *, int));
extern void output_function_epilogue PARAMS ((FILE *, int));
extern int compute_frame_size PARAMS ((int, int *));
extern int and_mask_p PARAMS ((unsigned HOST_WIDE_INT));
extern int cint_ok_for_move PARAMS ((HOST_WIDE_INT));
extern void hppa_expand_prologue PARAMS ((void));
extern void hppa_expand_epilogue PARAMS ((void));
extern int hppa_can_use_return_insn_p PARAMS ((void));
extern int ior_mask_p PARAMS ((unsigned HOST_WIDE_INT));
#ifdef TREE_CODE
extern int reloc_needed PARAMS ((tree));
#endif /* TREE_CODE */
/* Definitions of target machine for GNU compiler, for the HP Spectrum.
Copyright (C) 1992, 93-98, 1999 Free Software Foundation, Inc.
Copyright (C) 1992, 93-99, 2000 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
Software Science at the University of Utah.
......@@ -44,7 +44,7 @@ enum processor_type
};
/* For -mschedule= option. */
extern char *pa_cpu_string;
extern const char *pa_cpu_string;
extern enum processor_type pa_cpu;
#define pa_cpu_attr ((enum attr_cpu)pa_cpu)
......@@ -70,7 +70,7 @@ enum architecture_type
};
/* For -march= option. */
extern char *pa_arch_string;
extern const char *pa_arch_string;
extern enum architecture_type pa_arch;
/* Print subsidiary information on the compiler version in use. */
......@@ -294,17 +294,6 @@ extern int target_flags;
/* Machine dependent reorg pass. */
#define MACHINE_DEPENDENT_REORG(X) pa_reorg(X)
/* Prototype function used in MACHINE_DEPENDENT_REORG macro. */
void pa_reorg ();
/* Prototype function used in various macros. */
int symbolic_operand ();
/* Used in insn-*.c. */
int following_call ();
int function_label_operand ();
int lhs_lshift_cint_operand ();
/* Names to predefine in the preprocessor for this target machine. */
#define CPP_PREDEFINES "-Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -Dunix -Dhp9000 -Dhp800 -Dspectrum -DREVARGV -Asystem(unix) -Asystem(bsd) -Acpu(hppa) -Amachine(hppa)"
......@@ -748,9 +737,6 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FPUPPER_REGS, FP_REGS, GENERAL_
: (C) == 'P' ? and_mask_p (VALUE) \
: 0)
/* Prototype function used in macro CONST_OK_FOR_LETTER_P. */
int zdepi_cint_p ();
/* Similar, but for floating or large integer constants, and defining letters
G and H. Here VALUE is the CONST_DOUBLE rtx itself.
......@@ -1219,18 +1205,15 @@ extern int may_call_alloca;
Ordinarily they are not call used registers, but they are for
_builtin_saveregs, so we must make this explicit. */
extern struct rtx_def *hppa_builtin_saveregs ();
#define EXPAND_BUILTIN_SAVEREGS() hppa_builtin_saveregs ()
/* Implement `va_start' for varargs and stdarg. */
extern void hppa_va_start();
#define EXPAND_BUILTIN_VA_START(stdarg, valist, nextarg) \
hppa_va_start (stdarg, valist, nextarg)
/* Implement `va_arg'. */
extern struct rtx_def *hppa_va_arg();
#define EXPAND_BUILTIN_VA_ARG(valist, type) \
hppa_va_arg (valist, type)
......@@ -1586,7 +1569,6 @@ do { \
It is always safe for this macro to do nothing. It exists to recognize
opportunities to optimize the output. */
extern struct rtx_def *hppa_legitimize_address ();
#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) \
{ rtx orig_x = (X); \
(X) = hppa_legitimize_address (X, OLDX, MODE); \
......@@ -2153,7 +2135,7 @@ while (0)
fprintf (FILE, "%d(%s)", offset, reg_names [REGNO (base)]); \
break; \
case LO_SUM: \
if (!symbolic_operand (XEXP (addr, 1))) \
if (!symbolic_operand (XEXP (addr, 1), VOIDmode)) \
fputs ("R'", FILE); \
else if (flag_pic == 0) \
fputs ("RR'", FILE); \
......@@ -2174,91 +2156,6 @@ while (0)
}}
/* Define functions in pa.c and used in insn-output.c. */
extern char *output_and ();
extern char *output_ior ();
extern char *output_move_double ();
extern char *output_fp_move_double ();
extern char *output_block_move ();
extern char *output_cbranch ();
extern char *output_bb ();
extern char *output_bvb ();
extern char *output_dbra ();
extern char *output_movb ();
extern char *output_parallel_movb ();
extern char *output_parallel_addb ();
extern char *output_return ();
extern char *output_call ();
extern char *output_millicode_call ();
extern char *output_mul_insn ();
extern char *output_div_insn ();
extern char *output_mod_insn ();
extern char *singlemove_string ();
extern void output_arg_descriptor ();
extern void output_deferred_plabels ();
extern void override_options ();
extern void output_ascii ();
extern void output_function_prologue ();
extern void output_function_epilogue ();
extern void output_global_address ();
extern void print_operand ();
extern struct rtx_def *legitimize_pic_address ();
extern struct rtx_def *gen_cmp_fp ();
extern void hppa_encode_label ();
extern int arith11_operand ();
extern int symbolic_expression_p ();
extern int reloc_needed ();
extern int compute_frame_size ();
extern int hppa_address_cost ();
extern int and_mask_p ();
extern int symbolic_memory_operand ();
extern int pa_adjust_cost ();
extern int pa_adjust_insn_length ();
extern int int11_operand ();
extern int reg_or_cint_move_operand ();
extern int arith5_operand ();
extern int uint5_operand ();
extern int pic_label_operand ();
extern int plus_xor_ior_operator ();
extern int basereg_operand ();
extern int shadd_operand ();
extern int arith_operand ();
extern int read_only_operand ();
extern int move_operand ();
extern int and_operand ();
extern int ior_operand ();
extern int arith32_operand ();
extern int uint32_operand ();
extern int reg_or_nonsymb_mem_operand ();
extern int reg_or_0_operand ();
extern int reg_or_0_or_nonsymb_mem_operand ();
extern int pre_cint_operand ();
extern int post_cint_operand ();
extern int div_operand ();
extern int int5_operand ();
extern int movb_comparison_operator ();
extern int ireg_or_int5_operand ();
extern int fmpyaddoperands ();
extern int fmpysuboperands ();
extern int call_operand_address ();
extern int cint_ok_for_move ();
extern int ior_operand ();
extern void emit_bcond_fp ();
extern int emit_move_sequence ();
extern int emit_hpdiv_const ();
extern void hppa_expand_prologue ();
extern void hppa_expand_epilogue ();
extern int hppa_can_use_return_insn_p ();
extern int is_function_label_plus_const ();
extern int jump_in_call_delay ();
extern enum reg_class secondary_reload_class ();
extern int insn_sets_and_refs_are_delayed ();
/* Declare functions defined in pa.c and used in templates. */
extern struct rtx_def *return_addr_rtx ();
/* Find the return address associated with the frame given by
FRAMEADDR. */
#define RETURN_ADDR_RTX(COUNT, FRAMEADDR) \
......
;;- Machine description for HP PA-RISC architecture for GNU C compiler
;; Copyright (C) 1992, 93-98, 1999 Free Software Foundation, Inc.
;; Copyright (C) 1992, 93-99, 2000 Free Software Foundation, Inc.
;; Contributed by the Center for Software Science at the University
;; of Utah.
......@@ -1620,7 +1620,7 @@
(plus:SI (match_operand:SI 1 "register_operand" "r")
(high:SI (match_operand 2 "" ""))))]
"symbolic_operand (operands[2], Pmode)
&& ! function_label_operand (operands[2])
&& ! function_label_operand (operands[2], Pmode)
&& flag_pic == 2"
"addil LT'%G2,%1"
[(set_attr "type" "binary")
......@@ -1652,8 +1652,8 @@
[(set (match_operand:SI 0 "register_operand" "=a")
(high:SI (match_operand 1 "" "")))]
"symbolic_operand (operands[1], Pmode)
&& ! function_label_operand (operands[1])
&& ! read_only_operand (operands[1])
&& ! function_label_operand (operands[1], Pmode)
&& ! read_only_operand (operands[1], Pmode)
&& ! flag_pic"
"*
{
......@@ -1688,7 +1688,7 @@
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(high:SI (match_operand 1 "" "")))]
"(!flag_pic || !symbolic_operand (operands[1]), Pmode)
"(!flag_pic || !symbolic_operand (operands[1], Pmode))
&& !is_function_label_plus_const (operands[1])"
"*
{
......
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