|
|
1.1 ! root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.