|
|
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: /* Output a string of assembler code, substituting insn operands. ! 22: Defined in final.c. */ ! 23: extern void output_asm_insn (); ! 24: ! 25: /* Output a string of assembler code, substituting numbers, strings ! 26: and fixed syntactic prefixes. */ ! 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 (); ! 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: ! 133: /* Nonzero means generate position-independent code. ! 134: This is not fully implemented yet. */ ! 135: ! 136: extern int flag_pic; ! 137: ! 138: /* This is nonzero if the current function uses pic_offset_table_rtx. */ ! 139: extern int current_function_uses_pic_offset_table; ! 140: ! 141: /* The line number of the beginning of the current function. ! 142: sdbout.c needs this so that it can output relative linenumbers. */ ! 143: ! 144: #ifdef SDB_DEBUGGING_INFO /* Avoid undef sym in certain broken linkers. */ ! 145: extern int sdb_begin_function_line; ! 146: #endif ! 147: ! 148: /* File in which assembler code is being written. */ ! 149: ! 150: #ifdef BUFSIZ /* The hope is that any kind of stdio.h must define BUFSIZ. */ ! 151: extern FILE *asm_out_file; ! 152: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.