source: trunk/third/gcc/recog.h @ 11288

Revision 11288, 4.6 KB checked in by ghudson, 26 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r11287, which included commits to RCS files with non-trunk default branches.
Line 
1/* Declarations for interface to insn recognizer and insn-output.c.
2   Copyright (C) 1987, 1996, 1997 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6GNU CC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU CC is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU CC; see the file COPYING.  If not, write to
18the Free Software Foundation, 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA.  */
20
21#include "gansidecl.h"
22
23extern void init_recog                  PROTO((void));
24extern void init_recog_no_volatile      PROTO((void));
25extern int recog_memoized               PROTO((rtx));
26extern int check_asm_operands           PROTO((rtx));
27extern int validate_change              PROTO((rtx, rtx *, rtx, int));
28extern int apply_change_group           PROTO((void));
29extern int num_validated_changes        PROTO((void));
30extern void cancel_changes              PROTO((int));
31extern int constrain_operands           PROTO((int, int));
32extern int memory_address_p             PROTO((enum machine_mode, rtx));
33extern int strict_memory_address_p      PROTO((enum machine_mode, rtx));
34extern int validate_replace_rtx         PROTO((rtx, rtx, rtx));
35extern int reg_fits_class_p             PROTO((rtx, enum reg_class, int,
36                                               enum machine_mode));
37extern rtx *find_single_use             PROTO((rtx, rtx, rtx *));
38
39extern int general_operand              PROTO((rtx, enum machine_mode));
40extern int address_operand              PROTO((rtx, enum machine_mode));
41extern int register_operand             PROTO((rtx, enum machine_mode));
42extern int scratch_operand              PROTO((rtx, enum machine_mode));
43extern int immediate_operand            PROTO((rtx, enum machine_mode));
44extern int const_int_operand            PROTO((rtx, enum machine_mode));
45extern int cosnt_double_operand         PROTO((rtx, enum machine_mode));
46extern int nonimmediate_operand         PROTO((rtx, enum machine_mode));
47extern int nonmemory_operand            PROTO((rtx, enum machine_mode));
48extern int push_operand                 PROTO((rtx, enum machine_mode));
49extern int memory_operand               PROTO((rtx, enum machine_mode));
50extern int indirect_operand             PROTO((rtx, enum machine_mode));
51extern int mode_independent_operand     PROTO((rtx, enum machine_mode));
52extern int comparison_operator          PROTO((rtx, enum machine_mode));
53
54extern int offsettable_memref_p         PROTO((rtx));
55extern int offsettable_nonstrict_memref_p       PROTO((rtx));
56extern int offsettable_address_p        PROTO((int, enum machine_mode, rtx));
57extern int mode_dependent_address_p     PROTO((rtx));
58
59extern int recog                        PROTO((rtx, rtx, int *));
60extern void add_clobbers                PROTO((rtx, int));
61extern void insn_extract                PROTO((rtx));
62
63/* Nonzero means volatile operands are recognized.  */
64extern int volatile_ok;
65
66/* The following vectors hold the results from insn_extract.  */
67
68/* Indexed by N, gives value of operand N.  */
69extern rtx recog_operand[];
70
71/* Indexed by N, gives location where operand N was found.  */
72extern rtx *recog_operand_loc[];
73
74/* Indexed by N, gives location where the Nth duplicate-appearance of
75   an operand was found.  This is something that matched MATCH_DUP.  */
76extern rtx *recog_dup_loc[];
77
78/* Indexed by N, gives the operand number that was duplicated in the
79   Nth duplicate-appearance of an operand.  */
80extern char recog_dup_num[];
81
82/* Access the output function for CODE.  */
83
84#define OUT_FCN(CODE) (*insn_outfun[(int) (CODE)])
85
86/* Tables defined in insn-output.c that give information about
87   each insn-code value.  */
88
89/* These are vectors indexed by insn-code.  Details in genoutput.c.  */
90
91extern char *const insn_template[];
92
93extern char *(*const insn_outfun[]) ();
94
95extern const int insn_n_operands[];
96
97extern const int insn_n_dups[];
98
99/* Indexed by insn code number, gives # of constraint alternatives.  */
100
101extern const int insn_n_alternatives[];
102
103/* These are two-dimensional arrays indexed first by the insn-code
104   and second by the operand number.  Details in genoutput.c.  */
105
106#ifdef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
107extern char *const insn_operand_constraint[][MAX_RECOG_OPERANDS];
108#endif
109
110#ifndef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
111extern const char insn_operand_address_p[][MAX_RECOG_OPERANDS];
112#endif
113
114extern const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS];
115
116extern const char insn_operand_strict_low[][MAX_RECOG_OPERANDS];
117
118extern int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS]) ();
119
120extern char * insn_name[];
Note: See TracBrowser for help on using the repository browser.