function-at-a-time processing in C

Benjamin Chelf chelf@codesourcery.com
Wed Jun 14 10:26:00 GMT 2000


This is the first patch that will move us towards using the C++
tree representation in C as well as C++.  Eventually, the C
front-end will work like the C++ front-end, using
function-at-a-time processing.  We want to share as much code as
possible between the two front-ends. These changes only affect the C++
front end and were tested on i686-pc-linux-gnu.

Because these changes are very fundamental to GCC, much of this
work will likely happen on a branch so as not to impact the
GCC 3.0 release.  However, the first few preliminary bits that
are totally safe will go in on the mainline.

This work is being done in cooperation with Stan Cox
who has been doing similar work at RedHat.

This patch has been approved by Mark Mitchell.

Benjamin Chelf
chelf@codesourcery.com
CodeSourcery, LLC

Index: c-common.def
===================================================================
RCS file: c-common.def
diff -N c-common.def
*** /dev/null	Tue May  5 13:32:27 1998
--- c-common.def	Wed Jun 14 09:52:24 2000
***************
*** 0 ****
--- 1,63 ----
+ /* This file contains the definitions and documentation for the
+    additional tree codes used in the GNU C++ compiler (see tree.def
+    for the standard codes).
+    Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998,
+    1999, 2000 Free Software Foundation, Inc.
+    Written by Benjamin Chelf <chelf@codesourcery.com>
+ 
+ This file is part of GNU CC.
+ 
+ GNU CC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+ 
+ GNU CC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GNU CC; see the file COPYING.  If not, write to
+ the Free Software Foundation, 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.  */
+ 
+ /* Tree nodes relevent to both C and C++. These were originally in
+ cp-tree.def in the cp subdir. */
+ 
+ /* A node to remember a source position.  */
+ DEFTREECODE (SRCLOC, "srcloc", 'x', 2)
+ 
+ /* A whole bunch of tree codes for the initial, superficial parsing of
+    templates.  */
+ DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", '1', 1)
+ DEFTREECODE (ARROW_EXPR, "arrow_expr", 'e', 1)
+ DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", '1', 1)
+ 
+ DEFTREECODE (EXPR_STMT, "expr_stmt", 'e', 1)
+ DEFTREECODE (COMPOUND_STMT, "compound_stmt", 'e', 1)
+ DEFTREECODE (DECL_STMT, "decl_stmt", 'e', 1)
+ DEFTREECODE (IF_STMT, "if_stmt", 'e', 3)
+ DEFTREECODE (FOR_STMT, "for_stmt", 'e', 4)
+ DEFTREECODE (WHILE_STMT, "while_stmt", 'e', 2)
+ DEFTREECODE (DO_STMT, "do_stmt", 'e', 2)
+ DEFTREECODE (RETURN_STMT, "return_stmt", 'e', 1)
+ DEFTREECODE (BREAK_STMT, "break_stmt", 'e', 0)
+ DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
+ DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 2)
+ DEFTREECODE (GOTO_STMT, "goto_stmt", 'e', 1)
+ DEFTREECODE (LABEL_STMT, "label_stmt", 'e', 1)
+ DEFTREECODE (ASM_STMT, "asm_stmt", 'e', 5)
+ 
+ /* A SCOPE_STMT marks the beginning or end of a scope.  If
+    SCOPE_BEGIN_P holds, then this is the start of a scope.  If
+    SCOPE_END_P holds, then this is the end of a scope.  If
+    SCOPE_NULLIFIED_P holds then there turned out to be no variables in
+    this scope.  The SCOPE_STMT_BLOCK is the BLOCK containing the
+    variables declared in this scope.  */
+ DEFTREECODE (SCOPE_STMT, "scope_stmt", 'e', 1)
+ DEFTREECODE (CASE_LABEL, "case_label", 'e', 2)
+ 
+ /* A STMT_EXPR represents a statement-expression.  The
+    STMT_EXPR_STMT is the statement given by the expression.  */
+ DEFTREECODE (STMT_EXPR, "stmt_expr", 'e', 1)
Index: c-common.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/c-common.h,v
retrieving revision 1.15
diff -c -p -r1.15 c-common.h
*** c-common.h	2000/06/06 21:54:52	1.15
--- c-common.h	2000/06/14 16:52:24
*************** extern tree build_va_arg			PARAMS
((tree
*** 163,165 ****
--- 163,248 ----
  
  extern int self_promoting_args_p		PARAMS ((tree));
  extern tree simple_type_promotes_to		PARAMS ((tree));
+ 
+ 
+ /* These macros provide convenient access to the various _STMT nodes
+    created when parsing template declarations.  */
+ #define IF_COND(NODE)           TREE_OPERAND (IF_STMT_CHECK (NODE), 0)
+ #define THEN_CLAUSE(NODE)       TREE_OPERAND (IF_STMT_CHECK (NODE), 1)
+ #define ELSE_CLAUSE(NODE)       TREE_OPERAND (IF_STMT_CHECK (NODE), 2)
+ #define WHILE_COND(NODE)        TREE_OPERAND (WHILE_STMT_CHECK (NODE),
0)
+ #define WHILE_BODY(NODE)        TREE_OPERAND (WHILE_STMT_CHECK (NODE),
1)
+ #define DO_COND(NODE)           TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
+ #define DO_BODY(NODE)           TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
+ #define RETURN_EXPR(NODE)       TREE_OPERAND (RETURN_STMT_CHECK (NODE),
0)
+ #define EXPR_STMT_EXPR(NODE)    TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0)
+ #define FOR_INIT_STMT(NODE)     TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
+ #define FOR_COND(NODE)          TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
+ #define FOR_EXPR(NODE)          TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
+ #define FOR_BODY(NODE)          TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
+ #define SWITCH_COND(NODE)       TREE_OPERAND (SWITCH_STMT_CHECK (NODE),
0)
+ #define SWITCH_BODY(NODE)       TREE_OPERAND (SWITCH_STMT_CHECK (NODE),
1)
+ #define CASE_LOW(NODE)          TREE_OPERAND (CASE_LABEL_CHECK (NODE),
0)
+ #define CASE_HIGH(NODE)         TREE_OPERAND (CASE_LABEL_CHECK (NODE),
1)
+ #define GOTO_DESTINATION(NODE)  TREE_OPERAND (GOTO_STMT_CHECK (NODE), 0)
+ #define COMPOUND_BODY(NODE)     TREE_OPERAND (COMPOUND_STMT_CHECK
(NODE), 0)
+ #define ASM_CV_QUAL(NODE)       TREE_OPERAND (ASM_STMT_CHECK (NODE), 0)
+ #define ASM_STRING(NODE)        TREE_OPERAND (ASM_STMT_CHECK (NODE), 1)
+ #define ASM_OUTPUTS(NODE)       TREE_OPERAND (ASM_STMT_CHECK (NODE), 2)
+ #define ASM_INPUTS(NODE)        TREE_OPERAND (ASM_STMT_CHECK (NODE), 3)
+ #define ASM_CLOBBERS(NODE)      TREE_OPERAND (ASM_STMT_CHECK (NODE), 4)
+ #define DECL_STMT_DECL(NODE)    TREE_OPERAND (DECL_STMT_CHECK (NODE), 0)
+ #define STMT_EXPR_STMT(NODE)    TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
+ #define LABEL_STMT_LABEL(NODE)  TREE_OPERAND (LABEL_STMT_CHECK (NODE),
0)
+ 
+ /* Nonzero if this SCOPE_STMT is for the beginning of a scope.  */
+ #define SCOPE_BEGIN_P(NODE) \
+   (TREE_LANG_FLAG_0 (SCOPE_STMT_CHECK (NODE))) 
+ 
+ /* Nonzero if this SCOPE_STMT is for the end of a scope.  */
+ #define SCOPE_END_P(NODE) \
+   (!SCOPE_BEGIN_P (SCOPE_STMT_CHECK (NODE)))
+ 
+ /* The BLOCK containing the declarations contained in this scope.  */
+ #define SCOPE_STMT_BLOCK(NODE) \
+   (TREE_OPERAND (SCOPE_STMT_CHECK (NODE), 0))
+ 
+ /* Nonzero for a SCOPE_STMT if there were no variables in this scope.
*/
+ #define SCOPE_NULLIFIED_P(NODE) \
+   (SCOPE_STMT_BLOCK ((NODE)) == NULL_TREE)
+ 
+ /* Nonzero for a SCOPE_STMT which represents a lexical scope, but
+    which should be treated as non-existant from the point of view of
+    running cleanup actions.  */
+ #define SCOPE_NO_CLEANUPS_P(NODE) \
+   (TREE_LANG_FLAG_3 (SCOPE_STMT_CHECK (NODE)))
+ 
+ /* Nonzero for a SCOPE_STMT if this statement is for a partial scope.
+    For example, in:
+   
+      S s;
+      l:
+      S s2;
+      goto l;
+ 
+    there is (implicitly) a new scope after `l', even though there are
+    no curly braces.  In particular, when we hit the goto, we must
+    destroy s2 and then re-construct it.  For the implicit scope,
+    SCOPE_PARTIAL_P will be set.  */
+ #define SCOPE_PARTIAL_P(NODE) \
+   (TREE_LANG_FLAG_4 (SCOPE_STMT_CHECK (NODE)))
+ 
+ /* Nonzero for an ASM_STMT if the assembly statement is volatile.  */
+ #define ASM_VOLATILE_P(NODE)			\
+   (ASM_CV_QUAL (ASM_STMT_CHECK (NODE)) != NULL_TREE)
+ 
+ /* The line-number at which a statement began.  But if
+    STMT_LINENO_FOR_FN_P does holds, then this macro gives the
+    line number for the end of the current function instead.  */
+ #define STMT_LINENO(NODE)			\
+   (TREE_COMPLEXITY ((NODE)))
+ 
+ /* If non-zero, the STMT_LINENO for NODE is the line at which the
+    function ended.  */
+ #define STMT_LINENO_FOR_FN_P(NODE) 		\
+   (TREE_LANG_FLAG_2 ((NODE)))
Index: gencheck.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/gencheck.c,v
retrieving revision 1.14
diff -c -p -r1.14 gencheck.c
*** gencheck.c	2000/01/17 17:16:20	1.14
--- gencheck.c	2000/06/14 16:52:24
*************** Boston, MA 02111-1307, USA.  */
*** 25,30 ****
--- 25,31 ----
  
  const char *tree_codes[] = {
  #include "tree.def"
+ #include "c-common.def"
  #include "gencheck.h"
  (char*)0
  };
Index: cp/cp-tree.def
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/cp-tree.def,v
retrieving revision 1.48
diff -c -p -r1.48 cp-tree.def
*** cp-tree.def	2000/05/03 22:25:20	1.48
--- cp-tree.def	2000/06/14 16:52:28
*************** DEFTREECODE (OVERLOAD, "overload", 'x', 
*** 185,193 ****
     tree structure.  */
  DEFTREECODE (WRAPPER, "wrapper", 'x', 1)
  
- /* A node to remember a source position.  */
- DEFTREECODE (SRCLOC, "srcloc", 'x', 2)
- 
  /* Used to represent deferred name lookup for dependent names while
     parsing a template declaration.  The first argument is an
     IDENTIFIER_NODE for the name in question.  The TREE_TYPE is
--- 185,190 ----
*************** DEFTREECODE (REINTERPRET_CAST_EXPR, "rei
*** 205,231 ****
  DEFTREECODE (CONST_CAST_EXPR, "const_cast_expr", '1', 1)
  DEFTREECODE (STATIC_CAST_EXPR, "static_cast_expr", '1', 1)
  DEFTREECODE (DYNAMIC_CAST_EXPR, "dynamic_cast_expr", '1', 1)
- DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", '1', 1)
- DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", '1', 1)
- DEFTREECODE (ARROW_EXPR, "arrow_expr", 'e', 1)
  DEFTREECODE (DOTSTAR_EXPR, "dotstar_expr", 'e', 2)
  DEFTREECODE (TYPEID_EXPR, "typeid_expr", 'e', 1)
  DEFTREECODE (PSEUDO_DTOR_EXPR, "pseudo_dtor_expr", 'e', 3)
  
- DEFTREECODE (EXPR_STMT, "expr_stmt", 'e', 1)
- DEFTREECODE (COMPOUND_STMT, "compound_stmt", 'e', 1)
- DEFTREECODE (DECL_STMT, "decl_stmt", 'e', 1)
- DEFTREECODE (IF_STMT, "if_stmt", 'e', 3)
- DEFTREECODE (FOR_STMT, "for_stmt", 'e', 4)
- DEFTREECODE (WHILE_STMT, "while_stmt", 'e', 2)
- DEFTREECODE (DO_STMT, "do_stmt", 'e', 2)
- DEFTREECODE (RETURN_STMT, "return_stmt", 'e', 1)
- DEFTREECODE (BREAK_STMT, "break_stmt", 'e', 0)
- DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
- DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 2)
- DEFTREECODE (GOTO_STMT, "goto_stmt", 'e', 1)
- DEFTREECODE (LABEL_STMT, "label_stmt", 'e', 1)
- DEFTREECODE (ASM_STMT, "asm_stmt", 'e', 5)
  /* A SUBOBJECT statement marks the point at which a sub-object is
     fully constructed.  After this point, the SUBOBJECT_CLEANUP must be
     run if an exception is thrown before the end of the enclosing
--- 202,211 ----
*************** DEFTREECODE (CLEANUP_STMT, "cleanup_stmt
*** 244,265 ****
     the START_CATCH_TYPE.  If this is CATCH_ALL_TYPE, then the handler
     catches all types.  */
  DEFTREECODE (START_CATCH_STMT, "start_catch_stmt", 'e', 0)
- /* A SCOPE_STMT marks the beginning or end of a scope.  If
-    SCOPE_BEGIN_P holds, then this is the start of a scope.  If
-    SCOPE_END_P holds, then this is the end of a scope.  If
-    SCOPE_NULLIFIED_P holds then there turned out to be no variables in
-    this scope.  The SCOPE_STMT_BLOCK is the BLOCK containing the
-    variables declared in this scope.  */
- DEFTREECODE (SCOPE_STMT, "scope_stmt", 'e', 1)
  DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", 'e', 2)
- DEFTREECODE (CASE_LABEL, "case_label", 'e', 2)
  DEFTREECODE (RETURN_INIT, "return_init", 'e', 2)
  DEFTREECODE (TRY_BLOCK, "try_block", 'e', 2)
  DEFTREECODE (HANDLER, "handler", 'e', 2)
- 
- /* A STMT_EXPR represents a statement-expression.  The
-    STMT_EXPR_STMT is the statement given by the expression.  */
- DEFTREECODE (STMT_EXPR, "stmt_expr", 'e', 1)
  
  DEFTREECODE (TAG_DEFN, "tag_defn", 'e', 0)
  
--- 224,233 ----
Index: cp/cp-tree.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/cp-tree.h,v
retrieving revision 1.480
diff -c -p -r1.480 cp-tree.h
*** cp-tree.h	2000/06/14 16:10:13	1.480
--- cp-tree.h	2000/06/14 16:52:28
*************** along with GNU CC; see the file COPYING.
*** 20,26 ****
  the Free Software Foundation, 59 Temple Place - Suite 330,
  Boston, MA 02111-1307, USA.  */
  
- #include "c-common.h"
  #include "function.h"
  #include "splay-tree.h"
  #include "varray.h"
--- 20,25 ----
*************** Boston, MA 02111-1307, USA.  */
*** 28,33 ****
--- 27,34 ----
  #ifndef _CP_TREE_H
  #define _CP_TREE_H
  
+ #include "c-common.h"
+ 
  /* Usage of TREE_LANG_FLAG_?:
     0: BINFO_MARKED (BINFO nodes).
        COMPOUND_STMT_NO_SCOPE (in COMPOUND_STMT).
*************** Boston, MA 02111-1307, USA.  */
*** 207,212 ****
--- 208,214 ----
  #define RECORD_OR_UNION_TYPE_CHECK(NODE)	NODE
  
  #endif
+ 
  
  /* ABI control.  */
  
*************** typedef struct ptrmem_cst
*** 352,357 ****
--- 354,390 ----
  #define SET_IDENTIFIER_NAMESPACE_VALUE(NODE, VAL) \
    set_namespace_binding (NODE, current_namespace, VAL)
  
+ #define CLEANUP_P(NODE)         TREE_LANG_FLAG_0 (TRY_BLOCK_CHECK
(NODE))
+ #define CLEANUP_DECL(NODE)      TREE_OPERAND (CLEANUP_STMT_CHECK (NODE),
0)
+ #define CLEANUP_EXPR(NODE)      TREE_OPERAND (CLEANUP_STMT_CHECK (NODE),
1)
+ 
+ /* Returns nonzero iff TYPE1 and TYPE2 are the same type, in the usual
+    sense of `same'.  */
+ #define same_type_p(type1, type2) \
+   comptypes ((type1), (type2), COMPARE_STRICT)
+ 
+ /* Returns nonzero iff TYPE1 and TYPE2 are the same type, ignoring
+    top-level qualifiers.  */
+ #define same_type_ignoring_top_level_qualifiers_p(type1, type2) \
+   same_type_p (TYPE_MAIN_VARIANT (type1), TYPE_MAIN_VARIANT (type2))
+ 
+ /* Non-zero if we are presently building a statement tree, rather
+    than expanding each statement as we encounter it.  */
+ #define building_stmt_tree() (last_tree != NULL_TREE)
+ 
+ /* Returns non-zero iff NODE is a declaration for the global function
+    `main'.  */
+ #define DECL_MAIN_P(NODE)				\
+    (DECL_EXTERN_C_FUNCTION_P (NODE)                     \
+     && DECL_NAME (NODE) != NULL_TREE			\
+     && MAIN_NAME_P (DECL_NAME (NODE)))
+ 
+ /* Returns non-zero iff ID_NODE is an IDENTIFIER_NODE whose name is
+    `main'.  */
+ #define MAIN_NAME_P(ID_NODE) \
+    (strcmp (IDENTIFIER_POINTER (ID_NODE), "main") == 0)
+ 
+ 
  struct tree_binding
  {
    struct tree_common common;
*************** extern void (*back_end_hook) PARAMS ((tr
*** 1233,1238 ****
--- 1266,1272 ----
  #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,
  enum cplus_tree_code {
    __DUMMY = LAST_AND_UNUSED_TREE_CODE,
+ #include "c-common.def"
  #include "cp-tree.def"
    LAST_CPLUS_TREE_CODE
  };
*************** struct lang_decl
*** 1939,1948 ****
--- 1973,1998 ----
    } u2;
  };
  
+ /* An un-parsed default argument looks like an identifier.  */
+ #define DEFARG_LENGTH(NODE)
(DEFAULT_ARG_CHECK(NODE)->identifier.length)
+ #define DEFARG_POINTER(NODE)
(DEFAULT_ARG_CHECK(NODE)->identifier.pointer)
+ 
  /* Non-zero if NODE is a _DECL with TREE_READONLY set.  */
  #define TREE_READONLY_DECL_P(NODE) \
    (TREE_READONLY (NODE) && DECL_P (NODE))
  
+ /* DECL_NEEDED_P holds of a declaration when we need to emit its
+    definition.  This is true when the back-end tells us that
+    the symbol has been referenced in the generated code.  If, however,
+    we are not generating code, then it is also true when a symbol has
+    just been used somewhere, even if it's not really needed.  We need
+    anything that isn't comdat, but we don't know for sure whether or
+    not something is comdat until end-of-file.  */
+ #define DECL_NEEDED_P(DECL)					\
+   ((at_eof && !DECL_COMDAT (DECL))				\
+    || (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME ((DECL))))	\
+    || (flag_syntax_only && TREE_USED ((DECL))))
+ 
  /* Non-zero iff DECL is memory-based.  The DECL_RTL of
     certain const variables might be a CONST_INT, or a REG
     in some cases.  We cannot use `memory_operand' as a test
*************** extern int flag_new_for_scope;
*** 3107,3180 ****
  #define THUNK_VCALL_OFFSET(DECL) \
    (DECL_LANG_SPECIFIC (DECL)->decl_flags.u2.vcall_offset)
  
- /* DECL_NEEDED_P holds of a declaration when we need to emit its
-    definition.  This is true when the back-end tells us that
-    the symbol has been referenced in the generated code.  If, however,
-    we are not generating code, then it is also true when a symbol has
-    just been used somewhere, even if it's not really needed.  We need
-    anything that isn't comdat, but we don't know for sure whether or
-    not something is comdat until end-of-file.  */
- #define DECL_NEEDED_P(DECL)					\
-   ((at_eof && !DECL_COMDAT (DECL))				\
Index: cp/Make-lang.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/Make-lang.in,v
retrieving revision 1.54
diff -c -p -r1.54 Make-lang.in
*** Make-lang.in	2000/06/13 21:49:33	1.54
--- Make-lang.in	2000/06/14 17:08:04
*************** $(DEMANGLER_PROG): cxxmain.o underscore.
*** 110,115 ****
--- 110,116 ----
  	  cxxmain.o underscore.o $(LIBS)
  
  CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/class.c
$(srcdir)/cp/cp-tree.def \
+  $(srcdir)/c-common.def \
   $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cvt.c $(srcdir)/cp/decl.c \
   $(srcdir)/cp/decl.h $(srcdir)/cp/decl2.c $(srcdir)/cp/dump.c \
   $(srcdir)/cp/errfn.c $(srcdir)/cp/error.c $(srcdir)/cp/except.c \
*************** CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)
*** 123,129 ****
  
  cc1plus$(exeext): $(P) $(CXX_SRCS) $(LIBDEPS) stamp-objlist c-common.o \
          c-pragma.o $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cp-tree.def \
! 	$(srcdir)/cp/gxx.gperf $(srcdir)/cp/cfns.gperf hash.o \
  	$(srcdir)/cp/operators.def
  	cd cp; $(MAKE) $(LANG_FLAGS_TO_PASS) $(CXX_FLAGS_TO_PASS)
../cc1plus$(exeext)
  #
--- 124,130 ----
  
  cc1plus$(exeext): $(P) $(CXX_SRCS) $(LIBDEPS) stamp-objlist c-common.o \
          c-pragma.o $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cp-tree.def \
! 	$(srcdir)/c-common.def $(srcdir)/cp/gxx.gperf
$(srcdir)/cp/cfns.gperf hash.o \
  	$(srcdir)/cp/operators.def
  	cd cp; $(MAKE) $(LANG_FLAGS_TO_PASS) $(CXX_FLAGS_TO_PASS)
../cc1plus$(exeext)
  #
Index: cp/Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/Makefile.in,v
retrieving revision 1.88
diff -c -p -r1.88 Makefile.in
*** Makefile.in	2000/06/06 20:11:40	1.88
--- Makefile.in	2000/06/14 17:08:04
*************** RTL_H = $(srcdir)/../rtl.h $(srcdir)/../
*** 203,209 ****
  TREE_H = $(srcdir)/../tree.h $(srcdir)/../real.h $(srcdir)/../tree.def \
  	$(srcdir)/../machmode.h $(srcdir)/../machmode.def
  CXX_TREE_H = $(TREE_H) cp-tree.h $(srcdir)/../c-common.h cp-tree.def \
! 	$(srcdir)/../function.h $(srcdir)/../varray.h \
  	$(srcdir)/../../include/splay-tree.h \
  	$(srcdir)/../system.h $(CONFIG_H)
  PARSE_H = $(srcdir)/parse.h
--- 203,209 ----
  TREE_H = $(srcdir)/../tree.h $(srcdir)/../real.h $(srcdir)/../tree.def \
  	$(srcdir)/../machmode.h $(srcdir)/../machmode.def
  CXX_TREE_H = $(TREE_H) cp-tree.h $(srcdir)/../c-common.h cp-tree.def \
! 	$(srcdir)/../c-common.def $(srcdir)/../function.h
$(srcdir)/../varray.h \
  	$(srcdir)/../../include/splay-tree.h \
  	$(srcdir)/../system.h $(CONFIG_H)
  PARSE_H = $(srcdir)/parse.h
Index: cp/lex.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/lex.c,v
retrieving revision 1.205
diff -c -p -r1.205 lex.c
*** lex.c	2000/06/09 21:47:40	1.205
--- lex.c	2000/06/14 17:08:05
*************** get_time_identifier (name)
*** 349,354 ****
--- 349,355 ----
  
  static char cplus_tree_code_type[] = {
    'x',
+ #include "c-common.def"
  #include "cp-tree.def"
  };
  #undef DEFTREECODE
*************** static char cplus_tree_code_type[] = {
*** 361,366 ****
--- 362,368 ----
  
  static int cplus_tree_code_length[] = {
    0,
+ #include "c-common.def"
  #include "cp-tree.def"
  };
  #undef DEFTREECODE
*************** static int cplus_tree_code_length[] = {
*** 371,376 ****
--- 373,379 ----
  
  static const char *cplus_tree_code_name[] = {
    "@@dummy",
+ #include "c-common.def"
  #include "cp-tree.def"
  };
  #undef DEFTREECODE





More information about the Gcc-patches mailing list