|
|
1.1 root 1: /* Language-specific hook definitions for C front end. 1.1.1.3 ! root 2: Copyright (C) 1991, 1995 Free Software Foundation, Inc. 1.1 root 3: 4: This file is part of GNU CC. 5: 6: GNU CC is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU CC is distributed in the hope that it will be useful, 12: but WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14: GNU General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU CC; see the file COPYING. If not, write to 1.1.1.3 ! root 18: the Free Software Foundation, 59 Temple Place - Suite 330, ! 19: Boston, MA 02111-1307, USA. */ 1.1 root 20: 21: 22: #include "config.h" 23: #include "tree.h" 24: #include <stdio.h> 25: #include "input.h" 26: 27: /* Each of the functions defined here 28: is an alternative to a function in objc-actions.c. */ 29: 30: int 31: lang_decode_option (p) 32: char *p; 33: { 34: return c_decode_option (p); 35: } 36: 37: void 38: lang_init () 39: { 40: /* the beginning of the file is a new line; check for # */ 41: /* With luck, we discover the real source file's name from that 42: and put it in input_filename. */ 43: ungetc (check_newline (), finput); 44: } 45: 46: void 47: lang_finish () 48: { 49: } 50: 1.1.1.2 root 51: char * 52: lang_identify () 53: { 54: return "c"; 55: } 56: 57: void 58: print_lang_statistics () 59: { 60: } 61: 1.1 root 62: /* Used by c-lex.c, but only for objc. */ 1.1.1.2 root 63: 1.1 root 64: tree 65: lookup_interface (arg) 66: tree arg; 67: { 68: return 0; 69: } 70: 1.1.1.2 root 71: tree 72: is_class_name (arg) 73: tree arg; 74: { 75: return 0; 76: } 77: 1.1 root 78: void 79: maybe_objc_check_decl (decl) 80: tree decl; 81: { 82: } 83: 84: int 1.1.1.2 root 85: maybe_objc_comptypes (lhs, rhs, reflexive) 1.1 root 86: tree lhs, rhs; 1.1.1.2 root 87: int reflexive; 88: { 89: return -1; 90: } 91: 92: tree 93: maybe_objc_method_name (decl) 94: tree decl; 1.1 root 95: { 96: return 0; 97: } 98: 99: tree 100: maybe_building_objc_message_expr () 101: { 102: return 0; 103: } 104: 105: int 106: recognize_objc_keyword () 107: { 108: return 0; 109: } 110: 1.1.1.2 root 111: tree 112: build_objc_string (len, str) 113: int len; 114: char *str; 1.1 root 115: { 1.1.1.2 root 116: abort (); 117: return NULL_TREE; 1.1 root 118: } 119: 120: void 121: GNU_xref_begin () 122: { 123: fatal ("GCC does not yet support XREF"); 124: } 125: 126: void 127: GNU_xref_end () 128: { 129: fatal ("GCC does not yet support XREF"); 130: } 1.1.1.3 ! root 131: ! 132: /* called at end of parsing, but before end-of-file processing. */ ! 133: void ! 134: finish_file () ! 135: { ! 136: extern tree static_ctors, static_dtors; ! 137: extern tree get_file_function_name (); ! 138: extern tree build_function_call PROTO((tree, tree)); ! 139: tree void_list_node = build_tree_list (NULL_TREE, void_type_node); ! 140: #ifndef ASM_OUTPUT_CONSTRUCTOR ! 141: if (static_ctors) ! 142: { ! 143: tree fnname = get_file_function_name ('I'); ! 144: start_function (void_list_node, ! 145: build_parse_node (CALL_EXPR, fnname, void_list_node, ! 146: NULL_TREE), ! 147: NULL_TREE, NULL_TREE, 0); ! 148: fnname = DECL_ASSEMBLER_NAME (current_function_decl); ! 149: store_parm_decls (); ! 150: ! 151: for (; static_ctors; static_ctors = TREE_CHAIN (static_ctors)) ! 152: expand_expr_stmt (build_function_call (TREE_VALUE (static_ctors), ! 153: NULL_TREE)); ! 154: ! 155: finish_function (0); ! 156: ! 157: assemble_constructor (IDENTIFIER_POINTER (fnname)); ! 158: } ! 159: #endif ! 160: #ifndef ASM_OUTPUT_DESTRUCTOR ! 161: if (static_dtors) ! 162: { ! 163: tree fnname = get_file_function_name ('D'); ! 164: start_function (void_list_node, ! 165: build_parse_node (CALL_EXPR, fnname, void_list_node, ! 166: NULL_TREE), ! 167: NULL_TREE, NULL_TREE, 0); ! 168: fnname = DECL_ASSEMBLER_NAME (current_function_decl); ! 169: store_parm_decls (); ! 170: ! 171: for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors)) ! 172: expand_expr_stmt (build_function_call (TREE_VALUE (static_dtors), ! 173: NULL_TREE)); ! 174: ! 175: finish_function (0); ! 176: ! 177: assemble_destructor (IDENTIFIER_POINTER (fnname)); ! 178: } ! 179: #endif ! 180: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.