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

Revision 8834, 3.6 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, 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 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/* Add prototype support.  */
22#ifndef PROTO
23#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
24#define PROTO(ARGS) ARGS
25#else
26#define PROTO(ARGS) ()
27#endif
28#endif
29
30/* Recognize an insn and return its insn-code,
31   which is the sequence number of the DEFINE_INSN that it matches.
32   If the insn does not match, return -1.  */
33
34extern int recog_memoized PROTO((rtx));
35
36/* Determine whether a proposed change to an insn or MEM will make it
37   invalid.  Make the change if not.  */
38
39extern int validate_change PROTO((rtx, rtx *, rtx, int));
40
41/* Apply a group of changes if valid.  */
42
43extern int apply_change_group PROTO((void));
44
45/* Return the number of changes so far in the current group.   */
46
47extern int num_validated_changes PROTO((void));
48
49/* Retract some changes.  */
50
51extern void cancel_changes PROTO((int));
52
53/* Nonzero means volatile operands are recognized.  */
54
55extern int volatile_ok;
56
57/* Extract the operands from an insn that has been recognized.  */
58
59extern void insn_extract PROTO((rtx));
60
61/* The following vectors hold the results from insn_extract.  */
62
63/* Indexed by N, gives value of operand N.  */
64extern rtx recog_operand[];
65
66/* Indexed by N, gives location where operand N was found.  */
67extern rtx *recog_operand_loc[];
68
69/* Indexed by N, gives location where the Nth duplicate-appearance of
70   an operand was found.  This is something that matched MATCH_DUP.  */
71extern rtx *recog_dup_loc[];
72
73/* Indexed by N, gives the operand number that was duplicated in the
74   Nth duplicate-appearance of an operand.  */
75extern char recog_dup_num[];
76
77#ifndef __STDC__
78#ifndef const
79#define const
80#endif
81#endif
82
83/* Access the output function for CODE.  */
84
85#define OUT_FCN(CODE) (*insn_outfun[(int) (CODE)])
86
87/* Tables defined in insn-output.c that give information about
88   each insn-code value.  */
89
90/* These are vectors indexed by insn-code.  Details in genoutput.c.  */
91
92extern char *const insn_template[];
93
94extern char *(*const insn_outfun[]) ();
95
96extern const int insn_n_operands[];
97
98extern const int insn_n_dups[];
99
100/* Indexed by insn code number, gives # of constraint alternatives.  */
101
102extern const int insn_n_alternatives[];
103
104/* These are two-dimensional arrays indexed first by the insn-code
105   and second by the operand number.  Details in genoutput.c.  */
106
107#ifdef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
108extern char *const insn_operand_constraint[][MAX_RECOG_OPERANDS];
109#endif
110
111#ifndef REGISTER_CONSTRAINTS  /* Avoid undef sym in certain broken linkers.  */
112extern const char insn_operand_address_p[][MAX_RECOG_OPERANDS];
113#endif
114
115extern const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS];
116
117extern const char insn_operand_strict_low[][MAX_RECOG_OPERANDS];
118
119extern int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS]) ();
120
121extern char * insn_name[];
Note: See TracBrowser for help on using the repository browser.