]>
Commit | Line | Data |
---|---|---|
0c2768fc RS |
1 | /* Declarations for insn-output.c. These functions are defined in recog.c, |
2 | final.c, and varasm.c. | |
a8efe40d | 3 | Copyright (C) 1987, 1991 Free Software Foundation, Inc. |
0c2768fc RS |
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 | /* Output a string of assembler code, substituting insn operands. | |
22 | Defined in final.c. */ | |
1428a6b3 | 23 | extern void output_asm_insn (); |
0c2768fc RS |
24 | |
25 | /* Output a string of assembler code, substituting numbers, strings | |
26 | and fixed syntactic prefixes. */ | |
1428a6b3 RK |
27 | extern void asm_fprintf (); |
28 | ||
29 | /* Replace a SUBREG with a REG or a MEM, based on the thing it is a | |
30 | subreg of. */ | |
31 | extern rtx alter_subreg (); | |
0c2768fc RS |
32 | |
33 | /* When outputting assembler code, indicates which alternative | |
34 | of the constraints was actually satisfied. */ | |
35 | extern int which_alternative; | |
36 | ||
37 | /* When outputting delayed branch sequences, this rtx holds the | |
38 | sequence being output. It is null when no delayed branch | |
39 | sequence is being output, so it can be used as a test in the | |
40 | insn output code. | |
41 | ||
42 | This variable is defined in final.c. */ | |
43 | extern rtx final_sequence; | |
44 | ||
45 | /* Number of bytes of args popped by function being compiled on its return. | |
46 | Zero if no bytes are to be popped. | |
47 | May affect compilation of return insn or of function epilogue. */ | |
48 | ||
49 | extern int current_function_pops_args; | |
50 | ||
51 | /* Nonzero if function being compiled needs to be given an address | |
52 | where the value should be stored. */ | |
53 | ||
54 | extern int current_function_returns_struct; | |
55 | ||
56 | /* Nonzero if function being compiled needs to | |
57 | return the address of where it has put a structure value. */ | |
58 | ||
59 | extern int current_function_returns_pcc_struct; | |
60 | ||
61 | /* Nonzero if function being compiled needs to be passed a static chain. */ | |
62 | ||
63 | extern int current_function_needs_context; | |
64 | ||
65 | /* Nonzero if function being compiled can call setjmp. */ | |
66 | ||
67 | extern int current_function_calls_setjmp; | |
68 | ||
69 | /* Nonzero if function being compiled can call longjmp. */ | |
70 | ||
71 | extern int current_function_calls_longjmp; | |
72 | ||
73 | /* Nonzero if function being compiled can call alloca, | |
74 | either as a subroutine or builtin. */ | |
75 | ||
76 | extern int current_function_calls_alloca; | |
77 | ||
78 | /* Nonzero if function being compiled receives nonlocal gotos | |
79 | from nested functions. */ | |
80 | ||
81 | extern int current_function_has_nonlocal_label; | |
82 | ||
83 | /* Nonzero if function being compiled contains nested functions. */ | |
84 | ||
85 | extern int current_function_contains_functions; | |
86 | ||
87 | /* Nonzero if the current function returns a pointer type */ | |
88 | ||
89 | extern int current_function_returns_pointer; | |
90 | ||
91 | /* If function's args have a fixed size, this is that size, in bytes. | |
92 | Otherwise, it is -1. | |
93 | May affect compilation of return insn or of function epilogue. */ | |
94 | ||
95 | extern int current_function_args_size; | |
96 | ||
97 | /* # bytes the prologue should push and pretend that the caller pushed them. | |
98 | The prologue must do this, but only if parms can be passed in registers. */ | |
99 | ||
100 | extern int current_function_pretend_args_size; | |
101 | ||
102 | /* # of bytes of outgoing arguments required to be pushed by the prologue. | |
103 | If this is non-zero, it means that ACCUMULATE_OUTGOING_ARGS was defined | |
104 | and no stack adjusts will be done on function calls. */ | |
105 | ||
106 | extern int current_function_outgoing_args_size; | |
107 | ||
108 | /* Nonzero if current function uses varargs.h or equivalent. | |
109 | Zero for functions that use stdarg.h. */ | |
110 | ||
111 | extern int current_function_varargs; | |
112 | ||
113 | /* Quantities of various kinds of registers | |
114 | used for the current function's args. */ | |
115 | ||
116 | extern CUMULATIVE_ARGS current_function_args_info; | |
117 | ||
118 | /* Name of function now being compiled. */ | |
119 | ||
120 | extern char *current_function_name; | |
121 | ||
122 | /* If non-zero, an RTL expression for that location at which the current | |
123 | function returns its result. Usually equal to | |
124 | DECL_RTL (DECL_RESULT (current_function_decl)). */ | |
125 | ||
126 | extern rtx current_function_return_rtx; | |
127 | ||
128 | /* If some insns can be deferred to the delay slots of the epilogue, the | |
129 | delay list for them is recorded here. */ | |
130 | ||
131 | extern rtx current_function_epilogue_delay_list; | |
132 | ||
7fe78aa6 JL |
133 | /* Nonzero means generate position-independent code. |
134 | This is not fully implemented yet. */ | |
135 | ||
136 | extern int flag_pic; | |
137 | ||
0c2768fc RS |
138 | /* This is nonzero if the current function uses pic_offset_table_rtx. */ |
139 | extern int current_function_uses_pic_offset_table; | |
140 | ||
aae75261 JVA |
141 | /* This is nonzero if the current function uses the constant pool. */ |
142 | extern int current_function_uses_const_pool; | |
143 | ||
0c2768fc RS |
144 | /* The line number of the beginning of the current function. |
145 | sdbout.c needs this so that it can output relative linenumbers. */ | |
146 | ||
147 | #ifdef SDB_DEBUGGING_INFO /* Avoid undef sym in certain broken linkers. */ | |
148 | extern int sdb_begin_function_line; | |
149 | #endif | |
150 | ||
151 | /* File in which assembler code is being written. */ | |
152 | ||
153 | #ifdef BUFSIZ /* The hope is that any kind of stdio.h must define BUFSIZ. */ | |
154 | extern FILE *asm_out_file; | |
155 | #endif |