Commit | Line | Data |
---|---|---|
9bf86ebb PR |
1 | /* Declarations for insn-output.c. These functions are defined in recog.c, |
2 | final.c, and varasm.c. | |
3 | Copyright (C) 1987, 1991 Free Software Foundation, Inc. | |
4 | ||
5 | This file is part of GNU CC. | |
6 | ||
7 | GNU CC is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2, or (at your option) | |
10 | any later version. | |
11 | ||
12 | GNU CC is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with GNU CC; see the file COPYING. If not, write to | |
19 | the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
20 | ||
21 | #ifndef STDIO_PROTO | |
22 | #ifdef BUFSIZ | |
23 | #define STDIO_PROTO(ARGS) PROTO(ARGS) | |
24 | #else | |
25 | #define STDIO_PROTO(ARGS) () | |
26 | #endif | |
27 | #endif | |
28 | ||
29 | /* Output a string of assembler code, substituting insn operands. | |
30 | Defined in final.c. */ | |
31 | extern void output_asm_insn PROTO((char *, rtx *)); | |
32 | ||
33 | /* Output a string of assembler code, substituting numbers, strings | |
34 | and fixed syntactic prefixes. */ | |
35 | extern void asm_fprintf (); | |
36 | ||
37 | /* Print an integer constant expression in assembler syntax. | |
38 | Addition and subtraction are the only arithmetic | |
39 | that may appear in these expressions. */ | |
40 | extern void output_addr_const STDIO_PROTO((FILE *, rtx)); | |
41 | ||
42 | /* Output a name (as found inside a symbol_ref) in assembler syntax. */ | |
43 | extern void assemble_name STDIO_PROTO((FILE *, char *)); | |
44 | ||
45 | /* Replace a SUBREG with a REG or a MEM, based on the thing it is a | |
46 | subreg of. */ | |
47 | extern rtx alter_subreg PROTO((rtx)); | |
48 | ||
49 | /* When outputting assembler code, indicates which alternative | |
50 | of the constraints was actually satisfied. */ | |
51 | extern int which_alternative; | |
52 | ||
53 | /* When outputting delayed branch sequences, this rtx holds the | |
54 | sequence being output. It is null when no delayed branch | |
55 | sequence is being output, so it can be used as a test in the | |
56 | insn output code. | |
57 | ||
58 | This variable is defined in final.c. */ | |
59 | extern rtx final_sequence; | |
60 | ||
61 | /* Number of bytes of args popped by function being compiled on its return. | |
62 | Zero if no bytes are to be popped. | |
63 | May affect compilation of return insn or of function epilogue. */ | |
64 | ||
65 | extern int current_function_pops_args; | |
66 | ||
67 | /* Nonzero if function being compiled needs to be given an address | |
68 | where the value should be stored. */ | |
69 | ||
70 | extern int current_function_returns_struct; | |
71 | ||
72 | /* Nonzero if function being compiled needs to | |
73 | return the address of where it has put a structure value. */ | |
74 | ||
75 | extern int current_function_returns_pcc_struct; | |
76 | ||
77 | /* Nonzero if function being compiled needs to be passed a static chain. */ | |
78 | ||
79 | extern int current_function_needs_context; | |
80 | ||
81 | /* Nonzero if function being compiled can call setjmp. */ | |
82 | ||
83 | extern int current_function_calls_setjmp; | |
84 | ||
85 | /* Nonzero if function being compiled can call longjmp. */ | |
86 | ||
87 | extern int current_function_calls_longjmp; | |
88 | ||
89 | /* Nonzero if function being compiled can call alloca, | |
90 | either as a subroutine or builtin. */ | |
91 | ||
92 | extern int current_function_calls_alloca; | |
93 | ||
94 | /* Nonzero if function being compiled receives nonlocal gotos | |
95 | from nested functions. */ | |
96 | ||
97 | extern int current_function_has_nonlocal_label; | |
98 | ||
99 | /* Nonzero if function being compiled contains nested functions. */ | |
100 | ||
101 | extern int current_function_contains_functions; | |
102 | ||
103 | /* Nonzero if the current function returns a pointer type */ | |
104 | ||
105 | extern int current_function_returns_pointer; | |
106 | ||
107 | /* If function's args have a fixed size, this is that size, in bytes. | |
108 | Otherwise, it is -1. | |
109 | May affect compilation of return insn or of function epilogue. */ | |
110 | ||
111 | extern int current_function_args_size; | |
112 | ||
113 | /* # bytes the prologue should push and pretend that the caller pushed them. | |
114 | The prologue must do this, but only if parms can be passed in registers. */ | |
115 | ||
116 | extern int current_function_pretend_args_size; | |
117 | ||
118 | /* # of bytes of outgoing arguments required to be pushed by the prologue. | |
119 | If this is non-zero, it means that ACCUMULATE_OUTGOING_ARGS was defined | |
120 | and no stack adjusts will be done on function calls. */ | |
121 | ||
122 | extern int current_function_outgoing_args_size; | |
123 | ||
124 | /* Nonzero if current function uses varargs.h or equivalent. | |
125 | Zero for functions that use stdarg.h. */ | |
126 | ||
127 | extern int current_function_varargs; | |
128 | ||
129 | /* Quantities of various kinds of registers | |
130 | used for the current function's args. */ | |
131 | ||
132 | extern CUMULATIVE_ARGS current_function_args_info; | |
133 | ||
134 | /* Name of function now being compiled. */ | |
135 | ||
136 | extern char *current_function_name; | |
137 | ||
138 | /* If non-zero, an RTL expression for that location at which the current | |
139 | function returns its result. Usually equal to | |
140 | DECL_RTL (DECL_RESULT (current_function_decl)). */ | |
141 | ||
142 | extern rtx current_function_return_rtx; | |
143 | ||
144 | /* If some insns can be deferred to the delay slots of the epilogue, the | |
145 | delay list for them is recorded here. */ | |
146 | ||
147 | extern rtx current_function_epilogue_delay_list; | |
148 | ||
149 | /* Nonzero means generate position-independent code. | |
150 | This is not fully implemented yet. */ | |
151 | ||
152 | extern int flag_pic; | |
153 | ||
154 | /* This is nonzero if the current function uses pic_offset_table_rtx. */ | |
155 | extern int current_function_uses_pic_offset_table; | |
156 | ||
157 | /* This is nonzero if the current function uses the constant pool. */ | |
158 | extern int current_function_uses_const_pool; | |
159 | ||
160 | /* The line number of the beginning of the current function. | |
161 | sdbout.c needs this so that it can output relative linenumbers. */ | |
162 | ||
163 | #ifdef SDB_DEBUGGING_INFO /* Avoid undef sym in certain broken linkers. */ | |
164 | extern int sdb_begin_function_line; | |
165 | #endif | |
166 | ||
167 | /* File in which assembler code is being written. */ | |
168 | ||
169 | #ifdef BUFSIZ | |
170 | extern FILE *asm_out_file; | |
171 | #endif |