summaryrefslogtreecommitdiff
path: root/gcc/objcp
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/objcp
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/objcp')
-rw-r--r--gcc/objcp/ChangeLog406
-rw-r--r--gcc/objcp/Make-lang.in185
-rw-r--r--gcc/objcp/config-lang.in41
-rw-r--r--gcc/objcp/lang-specs.h61
-rw-r--r--gcc/objcp/objcp-decl.c145
-rw-r--r--gcc/objcp/objcp-decl.h89
-rw-r--r--gcc/objcp/objcp-lang.c142
7 files changed, 1069 insertions, 0 deletions
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
new file mode 100644
index 000000000..a78a300f6
--- /dev/null
+++ b/gcc/objcp/ChangeLog
@@ -0,0 +1,406 @@
+2013-04-12 Release Manager
+
+ * GCC 4.6.4 released.
+
+2012-03-01 Release Manager
+
+ * GCC 4.6.3 released.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-06-27 Release Manager
+
+ * GCC 4.6.1 released.
+
+2011-03-25 Release Manager
+
+ * GCC 4.6.0 released.
+
+2011-03-06 Joseph Myers <joseph@codesourcery.com>
+
+ * lang-specs.h: Match -save-temps* instead of -save-temps.
+
+2011-02-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR objc++/47711
+ * config-lang.in (gtfiles): Updated list.
+
+2011-02-17 Iain Sandoe <iains@gcc.gnu.org>
+
+ * Make-lang.in (START_HDRS): New.
+ (OBJCXX_OBJS): Added new object files from objc/.
+ (objcp/objcp-act.o): Updated prerequisites.
+ (objcp/objcp-lang.o): Updated prerequisites.
+ (objcp/objc-runtime-shared-support.o): New.
+ (objcp/objc-gnu-runtime-abi-01.o): New.
+ (objcp/objc-next-runtime-abi-01.o): New.
+ (objcp/objc-next-runtime-abi-02.o): New.
+ * config-lang.in (gtfiles): Updated.
+ * objcp-lang.c (objcxx_eh_personality): Removed.
+ (LANG_HOOKS_EH_PERSONALITY): Removed.
+ (LANG_HOOKS_EH_RUNTIME_TYPE): Removed.
+ (objcp_eh_personality_decl): Removed.
+
+2011-02-07 Mike Stump <mikestump@comcast.net>
+
+ * Make-lang.in (obj-c++.tags): Don't include *.y.
+
+2010-12-29 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objcp-lang.c (objcp_tsubst_copy_and_build): Update call to
+ objc_finish_message_expr.
+
+2010-12-26 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * config-lang.in (gtfiles): Added c-family/c-cppbuiltin.c.
+
+2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * config-lang.in (gtfiles): Added c-family/c-objc.h.
+ * Make-lang.in (objcp/objcp-act.o): Depend on
+ c-family/c-objc.h.
+ (objcp/objcp-lang.o): Same change.
+ (objcp/objcp-decl.o): Same change.
+ * objcp-lang.c: Include c-family/c-objc.h.
+ * objcp-decl.c: Same change.
+
+2010-11-23 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR objc/24358
+ * lang-specs.h: Print a deprecation note every time
+ objc++-cpp-output is requested.
+
+2010-10-24 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objcp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Do not define.
+
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objcp-lang.c (finish_file): Removed.
+
+2010-10-14 Iain Sandoe <iains@gcc.gnu.org>
+
+ merge from FSF apple 'trunk' branch.
+ 2006 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radars 4436866, 4505126, 4506903, 4517826
+ * objcp-lang.c (objcxx_init_ts): Update for property_decl.
+
+2010-10-13 Richard Henderson <rth@redhat.com>
+
+ * objcp-lang.c (objcxx_eh_personality): Update call to
+ build_personality_function.
+
+2010-10-11 Andi Kleen <ak@linux.intel.com>
+
+ * Make-lang.in (cc1objplus-checksum.c): Use correct temporary
+ name.
+
+2010-10-07 Andi Kleen <ak@linux.intel.com>
+
+ * Make-lang.in (cc1objplus-dummy): Remove.
+ (cc1objplus-checksum): Change to run checksum over object files
+ and options only.
+
+2010-10-04 Andi Kleen <ak@linux.intel.com>
+
+ * Make-lang.in (cc1objplus-dummy, cc1objplus): Add + to build rule.
+
+2010-09-28 Richard Henderson <rth@redhat.com>
+
+ * objcp-lang.c: Include "target.h".
+ (objcxx_eh_personality): Use targetm.except_unwind_info.
+ * Make-lang.in (objcp-lang.o): Update deps.
+
+2010-09-21 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR objc/25965
+ * objcp-decl.c (objcp_finish_struct): Call
+ objc_get_interface_ivars() and check for duplicate ivars.
+
+2010-06-28 Steven Bosscher <steven@gcc.gnu.org>
+
+ * objcp-lang.c: Do not include except.h.
+ * Make-lang.in: Update dependencies.
+
+2010-06-25 Joseph Myers <joseph@codesourcery.com>
+
+ * lang-specs.h: Remove +e handling.
+
+2010-06-08 Laurynas Biveinis <laurynas.biveinis@gmail.com>
+
+ * objcp-decl.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Use typed GC
+ allocation.
+
+2010-06-05 Steven Bosscher <steven@gcc.gnu.org>
+
+ * objcp-lang.c: Update include path for moved files.
+ * config-lang.in: Update paths in gtfiles for files in c-family/.
+
+2010-05-25 Steven Bosscher <steven@gcc.gnu.org>
+
+ * objcp-decl.c: Do not include tm.h, rtl.h, expr.h, c-common.h,
+ flags.h, input.h, except.h, output.h, toplev.h, cpplib.h, debug.h,
+ and target.h.
+ * objcp-lang.c: Do not include tm.h, toplev.h, diagnostics.h,
+ and debug.h. Explain why except.h has to be included.
+ * Make-lang.in: Update dependencies.
+
+2010-04-30 Steven Bosscher <steven@gcc.gnu.org>
+
+ * objcp-decl.c: Do not include varray.h.
+
+2009-09-22 Richard Guenther <rguenther@suse.de>
+
+ PR objc++/41430
+ * Make-lang.in (objcp-lang.o): Add $(EXCEPT_H) dependency.
+ * objcp-lang.c (LANG_HOOKS_EH_PERSONALITY): Define.
+ (LANG_HOOKS_EH_RUNTIME_TYPE): Likewise.
+ (objcxx_eh_personality): New function.
+
+2009-09-03 Diego Novillo <dnovillo@google.com>
+
+ * objcp-lang.c (lang_hooks): Remove const qualifier.
+
+2009-07-14 Taras Glek <tglek@mozilla.com>
+ Rafael Espindola <espindola@google.com>
+
+ * Make-lang.in (obj-c.install-plugin): New target for
+ installing plugin headers.
+
+2009-06-19 Ian Lance Taylor <iant@google.com>
+
+ * objcp-decl.h (start_struct): Remove in_struct and struct_types
+ parameters. Add struct_info parameter.
+ (finish_struct): Likewise.
+
+2009-06-13 Aldy Hernandez <aldyh@redhat.com>
+
+ * objcp-decl.h (start_struct): Add location argument.
+ (finish_struct): Same.
+ (finish_decl): New.
+
+2009-06-12 Aldy Hernandez <aldyh@redhat.com>
+
+ * objcp-decl.h (c_end_compound_stmt): New argument.
+ * objcp-decl.c (objcp_start_struct): Add argument.
+ (objcp_finish_struct): Same.
+
+2009-06-03 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (cc1objplus-checksum.o): Depend upon $(CONFIG_H)
+ and $(SYSTEM_H).
+
+2009-05-27 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (cc1objplus-dummy$(exeext)): Change $(COMPILER) to
+ $(LINKER).
+ (cc1objplus$(exeext)): Likewise.
+
+2009-05-26 Ian Lance Taylor <iant@google.com>
+
+ * Make-lang.in (cc1objplus-dummy$(exeext)): Use $(COMPILER).
+ (cc1objplus$(exeext), objcp/objcp-act.o): Likwise.
+
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * objcp-decl.h (start_struct): Add three new, ignored, macro
+ parameters.
+ (finish_struct): Add two new, ignored, macro parameters.
+
+2009-04-21 Joseph Myers <joseph@codesourcery.com>
+
+ * ChangeLog: Add copyright and license notices.
+
+2008-12-05 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR bootstrap/38262
+ * Make-lang.in (cc1objplus-dummy, cc1objplus): Add BACKENDLIBS,
+ remove GMPLIBS.
+
+2008-09-17 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR objc/37460
+ * objcp-lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
+
+2008-04-03 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (obj-c++_OBJS): New variable.
+
+2008-03-27 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in: Revert automatic dependency patch.
+
+2008-03-25 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (obj-c++_OBJS): Rename from objcp_OBJS.
+ (objcp/objcp-act.o): Restore target.
+
+2008-03-25 Tom Tromey <tromey@redhat.com>
+
+ * Make-lang.in (objcp_OBJS): New variable.
+ (cc1objplus-checksum.o, objcp/objcp-lang.o, objcp/objcp-decl.o,
+ objcp/objcp-act.o): Remove.
+
+2008-03-07 Paolo Bonzini <bonzini@gnu.org>
+
+ Revert:
+
+ 2008-02-07 Andreas Tobler <andreast-list@fgznet.ch>
+ Douglas Gregor <doug.gregor@gmail.com>
+
+ PR bootstrap/35115
+ * objcp-decl.c (objcp_comptypes): Call cp_comptypes, not comptypes.
+
+2008-02-07 Andreas Tobler <andreast-list@fgznet.ch>
+ Douglas Gregor <doug.gregor@gmail.com>
+
+ PR bootstrap/35115
+ * objcp-decl.c (objcp_comptypes): Call cp_comptypes, not comptypes.
+
+2008-02-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ PR other/35107
+ * Make-lang.in (cc1objplus-dummy, cc1objplus): Add $(GMPLIBS).
+
+2007-08-02 Nick Clifton <nickc@redhat.com>
+
+ * Make-lang.in: Change copyright header to refer to version 3 of
+ the GNU General Public License and to point readers at the
+ COPYING3 file and the FSF's license web page.
+ * lang-specs.h, objcp-decl.c, objcp-decl.h, config-lang.in,
+ objcp-lang.c: Likewise.
+
+2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
+
+ * Make-lang.in: Add dummy lang.install-pdf target.
+
+2006-10-23 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
+
+ * objcp-decl.h (objcp_builtin_function): Remove.
+
+2006-10-10 Brooks Moses <bmoses@stanford.edu>
+
+ * Make-lang.in: Added empty "obj-c++.pdf" target.
+
+2006-08-20 Mark Mitchell <mark@codesourcery.com>
+
+ * objcp-lang.c (objcp_tsubst_copy_and_build): Adjust call to
+ tsubst_copy_and_build.
+
+2006-07-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
+
+2006-07-03 Paolo Bonzini <bonzini@gnu.org>
+
+ PR other/27063
+ * config-lang.in: Add subdir_requires.
+
+2006-06-30 Jason Merrill <jason@redhat.com>
+
+ * objcp-decl.c (objcp_start_struct): Pass null attributes argument
+ to begin_class_definition.
+
+2006-05-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Make-lang.in (objcp/objcp-decl.o): Add dependency on
+ $(TARGET_H).
+
+2006-02-20 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
+
+ * Make-lang.in (OBJ-C++): Remove
+ (.PHONY): Remove Obj-c++ and obj-C++. Add obj-c++
+
+2005-12-14 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * Make-lang.in (objcp/objcp-decl.o): Add depends on $(EXPR_H).
+
+2005-12-07 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
+
+ * Make-lang.in (obj-c++.all.build, obj-c++.install-normal): Remove.
+
+2005-12-07 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
+
+ * Make-lang.in: Remove all dependencies on s-gtype.
+
+2005-11-22 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * objcp-decl.c (objcp_lookup_name): Remove.
+ * objcp-decl.h (objcp_lookup_name): Delete.
+ (lookup_name): Kill define.
+
+2005-09-11 Richard Henderson <rth@redhat.com>
+
+ * objcp-lang.c (objcxx_init_ts): Remove ALIAS_DECL.
+
+2005-07-09 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config-lang.in (gtfiles): Add cp-objcp-common.c.
+ * objcp-lang.c (objcxx_init_ts): New function.
+ (LANG_HOOKS_INIT_TS): Define.
+
+2005-07-03 Kazu Hirata <kazu@codesourcery.com>
+
+ * Make-lang.in (cc1plus-checksum.c): Use
+ build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
+
+2005-06-30 Zack Weinberg <zack@codesourcery.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * objcp-lang.c: No need to include cxx-pretty-print.h.
+ * Make-lang.in: Update dependencies.
+
+2005-06-25 Kelley Cook <kcook@gcc.gnu.org>
+
+ * all files: Update FSF in copyright headers.
+
+2005-06-20 Ziemowit Laski <zlaski@apple.com>
+
+ * config-lang.in (gtfiles): Add cp/rtti.c.
+
+2005-05-24 Ziemowit Laski <zlaski@apple.com>
+
+ * objcp-decl.c (objcp_start_struct, objcp_xref_tag): Adjust
+ call to xref_tag().
+ (objcp_build_component_ref): Remove function.
+ * objcp-decl.h (objcp_build_component_ref): Remove prototype.
+ (build_component_ref): Remove macro.
+ * objcp-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.
+
+2005-05-18 Geoffrey Keating <geoffk@apple.com>
+
+ * Make-lang.in (cc1objplus-dummy): New.
+ (cc1objplus-checksum.c): New.
+ (cc1objplus-checksum.o): New.
+ (cc1objplus): Add cc1objplus-checksum.o.
+
+2005-05-17 Ziemowit Laski <zlaski@apple.com>
+ Mike Stump <mrs@apple.com>
+
+ Yet more Objective-C++...
+
+ * Make-lang.in (objcp/objcp-lang.o): Add tree-gimple.h
+ (objcp/objcp-decl.o): Likewise.
+ (objcp/objcp-act.o): Likewise.
+ * objcp-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Add.
+
+2005-04-21 Ziemowit Laski <zlaski@apple.com>
+ Mike Stump <mrs@apple.com>
+
+ * ChangeLog: New.
+ * Make-lang.in: Likewise.
+ * config-lang.in: Likewise.
+ * lang-specs.h: Likewise.
+ * objcp-decl.c: Likewise.
+ * objcp-decl.h: Likewise.
+ * objcp-lang.c: Likewise.
+
+
+Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/gcc/objcp/Make-lang.in b/gcc/objcp/Make-lang.in
new file mode 100644
index 000000000..5bbd27eec
--- /dev/null
+++ b/gcc/objcp/Make-lang.in
@@ -0,0 +1,185 @@
+# Top level -*- makefile -*- fragment for GNU Objective-C++
+# Copyright (C) 2005, 2007, 2008, 2009, 2010, 2011
+# Free Software Foundation, Inc.
+# Contributed by Ziemowit Laski <zlaski@apple.com>
+
+#This file is part of GCC.
+
+#GCC 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 3, or (at your option)
+#any later version.
+
+#GCC 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 GCC; see the file COPYING3. If not see
+#<http://www.gnu.org/licenses/>.
+
+
+# This file provides the language dependent support in the main Makefile.
+# Each language makefile fragment must provide the following targets:
+#
+# foo.all.cross, foo.start.encap, foo.rest.encap,
+# foo.install-common, foo.install-man, foo.install-info, foo.install-pdf,
+# foo.install-html, foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall,
+# foo.mostlyclean, foo.clean, foo.distclean,
+# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
+#
+# where `foo' is the name of the language.
+#
+# It should also provide rules for:
+#
+# - making any compiler driver (eg: g++)
+# - the compiler proper (eg: cc1plus)
+# - define the names for selecting the language in LANGUAGES.
+
+#
+# Define the names for selecting Objective-C++ in LANGUAGES.
+obj-c++: cc1objplus$(exeext)
+
+# Tell GNU make to ignore these if they exist.
+.PHONY: obj-c++
+
+START_HDRS = $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(CXX_TREE_H) \
+ langhooks.h c-family/c-objc.h objc/objc-act.h
+
+# Use maximal warnings for this front end. Also, make ObjC and C++
+# headers accessible.
+objcp-warn = $(STRICT_WARN) -DOBJCPLUS -I$(srcdir)/objc -I$(srcdir)/cp
+
+# Language-specific object files for Objective C++.
+OBJCXX_OBJS = objcp/objcp-act.o objcp/objcp-lang.o objcp/objcp-decl.o \
+ objcp/objc-runtime-shared-support.o \
+ objcp/objc-gnu-runtime-abi-01.o \
+ objcp/objc-next-runtime-abi-01.o \
+ objcp/objc-next-runtime-abi-02.o \
+ $(CXX_AND_OBJCXX_OBJS)
+
+obj-c++_OBJS = $(OBJCXX_OBJS) cc1objplus-checksum.o
+
+cc1objplus-checksum.c : build/genchecksum$(build_exeext) checksum-options \
+ $(OBJCXX_OBJS) $(BACKEND) $(LIBDEPS)
+ build/genchecksum$(build_exeext) $(OBJCXX_OBJS) $(BACKEND) \
+ $(LIBDEPS) checksum-options > cc1objplus-checksum.c.tmp && \
+ $(srcdir)/../move-if-change cc1objplus-checksum.c.tmp \
+ cc1objplus-checksum.c
+
+cc1objplus-checksum.o : cc1objplus-checksum.c $(CONFIG_H) $(SYSTEM_H)
+
+cc1objplus$(exeext): $(OBJCXX_OBJS) cc1objplus-checksum.o $(BACKEND) $(LIBDEPS)
+ +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
+ $(OBJCXX_OBJS) cc1objplus-checksum.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
+
+# Objective C++ language specific files.
+
+objcp/objcp-lang.o : objcp/objcp-lang.c $(START_HDRS) \
+ $(C_COMMON_H) $(LANGHOOKS_DEF_H) cp/cp-objcp-common.h \
+ $(TARGET_H) gtype-objcp.h
+
+objcp/objcp-decl.o : objcp/objcp-decl.c \
+ $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(CXX_TREE_H) \
+ objc/objc-act.h objcp/objcp-decl.h c-family/c-objc.h
+
+objcp/objc-runtime-shared-support.o : objc/objc-runtime-shared-support.c \
+ $(START_HDRS) objc/objc-runtime-shared-support.h $(OBSTACK_H) \
+ objc/objc-next-metadata-tags.h gt-objc-objc-runtime-shared-support.h
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
+ $(OUTPUT_OPTION)
+
+objcp/objc-gnu-runtime-abi-01.o: objc/objc-gnu-runtime-abi-01.c $(START_HDRS) \
+ objc/objc-runtime-hooks.h $(GGC_H) \
+ gt-objc-objc-gnu-runtime-abi-01.h toplev.h
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
+ $(OUTPUT_OPTION)
+
+objcp/objc-next-runtime-abi-01.o: objc/objc-next-runtime-abi-01.c $(START_HDRS) \
+ $(GGC_H) objc/objc-runtime-hooks.h \
+ objc/objc-next-metadata-tags.h gt-objc-objc-next-runtime-abi-01.h output.h \
+ objc/objc-runtime-shared-support.h $(TARGET_H)
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
+ $(OUTPUT_OPTION)
+
+objcp/objc-next-runtime-abi-02.o: objc/objc-next-runtime-abi-02.c $(START_HDRS) \
+ $(GGC_H) objc/objc-runtime-hooks.h \
+ objc/objc-next-metadata-tags.h gt-objc-objc-next-runtime-abi-02.h $(TARGET_H) \
+ objc/objc-runtime-shared-support.h $(OBSTACK_H)
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
+ $(OUTPUT_OPTION)
+
+
+# The following must be an explicit rule; please keep in sync with the implicit
+# one in Makefile.in.
+objcp/objcp-act.o : objc/objc-act.c $(START_HDRS) $(GGC_H) \
+ $(RTL_H) $(EXPR_H) $(TARGET_H) $(DIAGNOSTIC_H) toplev.h $(FLAGS_H) \
+ input.h $(FUNCTION_H) output.h debug.h $(OBSTACK_H) \
+ objcp/objcp-decl.h $(LANGHOOKS_DEF_H) $(HASHTAB_H) gt-objc-objc-act.h \
+ $(GIMPLE_H) objc/objc-runtime-hooks.h objc/objc-runtime-shared-support.h
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< \
+ $(OUTPUT_OPTION)
+
+po-generated:
+
+#
+# Build hooks:
+
+obj-c++.all.cross:
+obj-c++.start.encap:
+obj-c++.rest.encap:
+obj-c++.info:
+obj-c++.install-info:
+obj-c++.dvi:
+obj-c++.pdf:
+obj-c++.install-pdf:
+obj-c++.html:
+obj-c++.install-html:
+obj-c++.srcinfo:
+obj-c++.srcextra:
+obj-c++.man:
+obj-c++.install-plugin:
+
+obj-c++.tags: force
+ cd $(srcdir)/objcp; etags -o TAGS.sub *.c *.h; \
+ etags --include TAGS.sub --include ../TAGS.sub
+
+lang_checks += check-obj-c++
+
+#
+# Install hooks:
+# cc1objplus is installed elsewhere as part of $(COMPILERS).
+
+obj-c++.install-common:
+
+obj-c++.install-man:
+
+obj-c++.uninstall:
+#
+# Clean hooks:
+# A lot of the ancillary files are deleted by the main makefile.
+# We just have to delete files specific to us.
+obj-c++.mostlyclean:
+ -rm -f objcp/*$(objext)
+ -rm -f objcp/*$(coverageexts)
+obj-c++.clean: obj-c++.mostlyclean
+obj-c++.distclean:
+ -rm -f objcp/config.status objcp/Makefile
+obj-c++.maintainer-clean:
+
+#
+# Stage hooks:
+
+obj-c++.stage1: stage1-start
+ -mv objcp/*$(objext) stage1/objcp
+obj-c++.stage2: stage2-start
+ -mv objcp/*$(objext) stage2/objcp
+obj-c++.stage3: stage3-start
+ -mv objcp/*$(objext) stage3/objcp
+obj-c++.stage4: stage4-start
+ -mv objcp/*$(objext) stage4/objcp
+obj-c++.stageprofile: stageprofile-start
+ -mv objcp/*$(objext) stageprofile/objcp
+obj-c++.stagefeedback: stagefeedback-start
+ -mv objcp/*$(objext) stagefeedback/objcp
diff --git a/gcc/objcp/config-lang.in b/gcc/objcp/config-lang.in
new file mode 100644
index 000000000..8c3d9c544
--- /dev/null
+++ b/gcc/objcp/config-lang.in
@@ -0,0 +1,41 @@
+# Top level configure fragment for GNU Objective-C++.
+# Copyright (C) 2005, 2007, 2010, 2011 Free Software Foundation, Inc.
+# Contributed by Ziemowit Laski <zlaski@apple.com>
+
+#This file is part of GCC.
+
+#GCC 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 3, or (at your option)
+#any later version.
+
+#GCC 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 GCC; see the file COPYING3. If not see
+#<http://www.gnu.org/licenses/>.
+
+# Configure looks for the existence of this file to auto-config each language.
+# We define several parameters used by configure:
+#
+# language - name of language as it would appear in $(LANGUAGES)
+# compilers - value to add to $(COMPILERS)
+
+language="obj-c++"
+
+compilers="cc1objplus\$(exeext)"
+
+# Per GCC Steering Committee.
+build_by_default="no"
+
+# By building the Objective-C and C++ front-ends, we will get
+# the object files we need, along with the libraries (libstdc++,
+# libobjc).
+lang_requires="objc c++"
+subdir_requires="objc cp"
+
+gtfiles="\$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/cp/call.c \$(srcdir)/cp/class.c \$(srcdir)/cp/cp-tree.h \$(srcdir)/cp/decl.c \$(srcdir)/cp/decl2.c \$(srcdir)/cp/mangle.c \$(srcdir)/cp/method.c \$(srcdir)/cp/name-lookup.h \$(srcdir)/cp/name-lookup.c \$(srcdir)/cp/cp-objcp-common.c \$(srcdir)/cp/parser.c \$(srcdir)/cp/pt.c \$(srcdir)/cp/repo.c \$(srcdir)/cp/rtti.c \$(srcdir)/cp/semantics.c \$(srcdir)/cp/tree.c \$(srcdir)/cp/typeck2.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-lex.c \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c "
+
diff --git a/gcc/objcp/lang-specs.h b/gcc/objcp/lang-specs.h
new file mode 100644
index 000000000..af21ff6d6
--- /dev/null
+++ b/gcc/objcp/lang-specs.h
@@ -0,0 +1,61 @@
+/* Definitions for specs for Objective-C++.
+ Copyright (C) 2005, 2007, 2010, 2011 Free Software Foundation, Inc.
+ Contributed by Ziemowit Laski <zlaski@apple.com>
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option)
+any later version.
+
+GCC 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 GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+
+/* This is the contribution to the `default_compilers' array in gcc.c for
+ obj-c++. It is based on -- and should be kept in sync with -- the g++
+ spec (found in cp/lang-specs.h). */
+
+#ifndef CPLUSPLUS_CPP_SPEC
+#define CPLUSPLUS_CPP_SPEC 0
+#endif
+
+ {".mm", "@objective-c++", 0, 0, 0},
+ {".M", "@objective-c++", 0, 0, 0},
+ {"@objective-c++-header",
+ "%{E|M|MM:cc1objplus -E %(cpp_options) %2 %(cpp_debug_options)}\
+ %{!E:%{!M:%{!MM:\
+ %{save-temps*|no-integrated-cpp:cc1objplus -E\
+ %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+ cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+ %(cc1_options) %2\
+ -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+ CPLUSPLUS_CPP_SPEC, 0, 0},
+ {"@objective-c++",
+ "%{E|M|MM:cc1objplus -E %(cpp_options) %2 %(cpp_debug_options)}\
+ %{!E:%{!M:%{!MM:\
+ %{save-temps*|no-integrated-cpp:cc1objplus -E\
+ %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+ cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+ %(cc1_options) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}",
+ CPLUSPLUS_CPP_SPEC, 0, 0},
+ {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+ {"@objective-c++-cpp-output",
+ "%{!M:%{!MM:%{!E:\
+ cc1objplus -fpreprocessed %i %(cc1_options) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+ {"@objc++-cpp-output",
+ "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+ %{!M:%{!MM:%{!E:\
+ cc1objplus -fpreprocessed %i %(cc1_options) %2\
+ %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
diff --git a/gcc/objcp/objcp-decl.c b/gcc/objcp/objcp-decl.c
new file mode 100644
index 000000000..e3571c4a1
--- /dev/null
+++ b/gcc/objcp/objcp-decl.c
@@ -0,0 +1,145 @@
+/* Process the ObjC-specific declarations and variables for
+ the Objective-C++ compiler.
+ Copyright (C) 2005, 2007, 2010 Free Software Foundation, Inc.
+ Contributed by Ziemowit Laski <zlaski@apple.com>
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option) any later
+version.
+
+GCC 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 GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "tree.h"
+#include "cp-tree.h"
+#include "hashtab.h"
+
+#include "c-family/c-objc.h"
+#include "objc-act.h"
+#include "objcp-decl.h"
+
+/* Hacks to simulate start_struct() and finish_struct(). */
+
+tree
+objcp_start_struct (location_t loc ATTRIBUTE_UNUSED,
+ enum tree_code code ATTRIBUTE_UNUSED, tree name)
+{
+ tree s;
+ /* The idea here is to mimic the actions that the C++ parser takes when
+ constructing 'extern "C" struct NAME {'. */
+ push_lang_context (lang_name_c);
+
+ if (!name)
+ name = make_anon_name ();
+
+ s = xref_tag (record_type, name, ts_global, 0);
+ CLASSTYPE_DECLARED_CLASS (s) = 0; /* this is a 'struct', not a 'class'. */
+ xref_basetypes (s, NULL_TREE); /* no base classes here! */
+
+ return begin_class_definition (s, NULL_TREE);
+}
+
+tree
+objcp_finish_struct (location_t loc ATTRIBUTE_UNUSED,
+ tree t, tree fieldlist, tree attributes)
+{
+ tree field, next_field;
+
+ for (field = fieldlist; field; field = next_field)
+ {
+ next_field = TREE_CHAIN (field); /* insert one field at a time; */
+ TREE_CHAIN (field) = NULL_TREE; /* otherwise, grokfield croaks. */
+ finish_member_declaration (field);
+ }
+ t = finish_struct (t, attributes);
+
+ /* If we are inside an @interface and are generating the list of
+ ivars, we need to check for duplicate ivars.
+ */
+ if (fieldlist)
+ {
+ tree original_fieldlist = fieldlist;
+ fieldlist = objc_get_interface_ivars (fieldlist);
+ if (fieldlist != original_fieldlist)
+ {
+ /* Minimal implementation of the equivalent of the C
+ front-end's detect_field_duplicates().
+ */
+ htab_t htab = htab_create (37, htab_hash_pointer, htab_eq_pointer, NULL);
+ tree x, y;
+ void **slot;
+
+ for (x = fieldlist; x ; x = DECL_CHAIN (x))
+ if ((y = DECL_NAME (x)) != 0)
+ {
+ slot = htab_find_slot (htab, y, INSERT);
+ if (*slot)
+ {
+ error ("duplicate member %q+D", x);
+ DECL_NAME (x) = NULL_TREE;
+ }
+ *slot = y;
+ }
+
+ htab_delete (htab);
+ }
+ }
+
+ pop_lang_context ();
+
+ return t;
+}
+
+void
+objcp_finish_function (void)
+{
+ /* The C++ flavor of 'finish_function' does not generate RTL -- one has
+ to call 'expand_or_defer_fn' to do that. */
+ expand_or_defer_fn (finish_function (0));
+}
+
+tree
+objcp_xref_tag (enum tree_code code ATTRIBUTE_UNUSED, tree name)
+{
+ return xref_tag (record_type, name, ts_global, false);
+}
+
+int
+objcp_comptypes (tree type1, tree type2)
+{
+ return comptypes (type1, type2, COMPARE_STRICT);
+}
+
+tree
+objcp_begin_compound_stmt (int flags ATTRIBUTE_UNUSED)
+{
+ return begin_compound_stmt (0);
+}
+
+tree
+objcp_end_compound_stmt (tree stmt, int flags ATTRIBUTE_UNUSED)
+{
+ /* The following has been snarfed from
+ cp/semantics.c:finish_compound_stmt(). */
+ if (TREE_CODE (stmt) == BIND_EXPR)
+ BIND_EXPR_BODY (stmt) = do_poplevel (BIND_EXPR_BODY (stmt));
+ else if (STATEMENT_LIST_NO_SCOPE (stmt))
+ stmt = pop_stmt_list (stmt);
+ else
+ stmt = do_poplevel (stmt);
+
+ return stmt;
+}
diff --git a/gcc/objcp/objcp-decl.h b/gcc/objcp/objcp-decl.h
new file mode 100644
index 000000000..b10fe686e
--- /dev/null
+++ b/gcc/objcp/objcp-decl.h
@@ -0,0 +1,89 @@
+/* Process the ObjC-specific declarations and variables for
+ the Objective-C++ compiler.
+ Copyright (C) 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Contributed by Ziemowit Laski <zlaski@apple.com>
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option) any later
+version.
+
+GCC 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 GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+
+#ifndef GCC_OBJCP_DECL_H
+#define GCC_OBJCP_DECL_H
+
+extern tree objcp_start_struct (location_t, enum tree_code, tree);
+extern tree objcp_finish_struct (location_t, tree, tree, tree);
+extern void objcp_finish_function (void);
+extern tree objcp_build_function_call (tree, tree);
+extern tree objcp_xref_tag (enum tree_code, tree);
+extern int objcp_comptypes (tree, tree);
+extern tree objcp_begin_compound_stmt (int);
+extern tree objcp_end_compound_stmt (tree, int);
+
+/* Now "cover up" the corresponding C++ functions if required (NB: the
+ OBJCP_ORIGINAL_FUNCTION macro, shown below, can still be used to
+ invoke the original C++ functions if needed). */
+#ifdef OBJCP_REMAP_FUNCTIONS
+
+#define start_struct(loc, code, name, struct_info) \
+ objcp_start_struct (loc, code, name)
+#define finish_struct(loc, t, fieldlist, attributes, struct_info) \
+ objcp_finish_struct (loc, t, fieldlist, attributes)
+#define finish_function() \
+ objcp_finish_function ()
+#define finish_decl(decl, loc, init, origtype, asmspec) \
+ cp_finish_decl (decl, init, false, asmspec, 0)
+#define xref_tag(code, name) \
+ objcp_xref_tag (code, name)
+#define comptypes(type1, type2) \
+ objcp_comptypes (type1, type2)
+#define c_begin_compound_stmt(flags) \
+ objcp_begin_compound_stmt (flags)
+#define c_end_compound_stmt(loc, stmt, flags) \
+ objcp_end_compound_stmt (stmt, flags)
+
+#undef OBJC_TYPE_NAME
+#define OBJC_TYPE_NAME(type) \
+ (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL \
+ ? DECL_NAME (TYPE_NAME (type)) \
+ : TYPE_NAME (type))
+#undef OBJC_SET_TYPE_NAME
+#define OBJC_SET_TYPE_NAME(type, name) \
+ if(TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL) \
+ DECL_NAME (TYPE_NAME (type)) = name; \
+ else \
+ TYPE_NAME (type) = name;
+
+#undef TYPE_OBJC_INFO
+#define TYPE_OBJC_INFO(TYPE) LANG_TYPE_CLASS_CHECK (TYPE)->objc_info
+#undef SIZEOF_OBJC_TYPE_LANG_SPECIFIC
+#define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type_class)
+#undef ALLOC_OBJC_TYPE_LANG_SPECIFIC
+#define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE) \
+ do { \
+ TYPE_LANG_SPECIFIC (NODE) = ggc_alloc_cleared_lang_type \
+ (sizeof (struct lang_type_class)); \
+ TYPE_LANG_SPECIFIC (NODE)->u.c.h.is_lang_type_class = 1; \
+ } while (0)
+
+#define OBJCP_ORIGINAL_FUNCTION(name, args) (name)args
+
+/* C++ marks ellipsis-free function parameters differently from C. */
+#undef OBJC_VOID_AT_END
+#define OBJC_VOID_AT_END void_list_node
+
+#endif /* OBJCP_REMAP_FUNCTIONS */
+
+#endif /* ! GCC_OBJCP_DECL_H */
diff --git a/gcc/objcp/objcp-lang.c b/gcc/objcp/objcp-lang.c
new file mode 100644
index 000000000..fe2be66ff
--- /dev/null
+++ b/gcc/objcp/objcp-lang.c
@@ -0,0 +1,142 @@
+/* Language-dependent hooks for Objective-C++.
+ Copyright 2005, 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
+ Contributed by Ziemowit Laski <zlaski@apple.com>
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option)
+any later version.
+
+GCC 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 GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "tree.h"
+#include "cp-tree.h"
+#include "c-family/c-common.h"
+#include "c-family/c-objc.h"
+#include "objc-act.h"
+#include "langhooks.h"
+#include "langhooks-def.h"
+#include "target.h"
+#include "cp-objcp-common.h"
+
+enum c_language_kind c_language = clk_objcxx;
+static void objcxx_init_ts (void);
+
+/* Lang hooks common to C++ and ObjC++ are declared in cp/cp-objcp-common.h;
+ consequently, there should be very few hooks below. */
+
+#undef LANG_HOOKS_NAME
+#define LANG_HOOKS_NAME "GNU Objective-C++"
+#undef LANG_HOOKS_INIT
+#define LANG_HOOKS_INIT objc_init
+#undef LANG_HOOKS_GIMPLIFY_EXPR
+#define LANG_HOOKS_GIMPLIFY_EXPR objc_gimplify_expr
+#undef LANG_HOOKS_INIT_TS
+#define LANG_HOOKS_INIT_TS objcxx_init_ts
+
+/* Each front end provides its own lang hook initializer. */
+struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
+
+/* Lang hook routines common to C++ and ObjC++ appear in cp/cp-objcp-common.c;
+ there should be very few (if any) routines below. */
+
+tree
+objcp_tsubst_copy_and_build (tree t, tree args, tsubst_flags_t complain,
+ tree in_decl, bool function_p ATTRIBUTE_UNUSED)
+{
+#define RECURSE(NODE) \
+ tsubst_copy_and_build (NODE, args, complain, in_decl, \
+ /*function_p=*/false, \
+ /*integral_constant_expression_p=*/false)
+
+ /* The following two can only occur in Objective-C++. */
+
+ switch ((int) TREE_CODE (t))
+ {
+ case MESSAGE_SEND_EXPR:
+ return objc_finish_message_expr
+ (RECURSE (TREE_OPERAND (t, 0)),
+ TREE_OPERAND (t, 1), /* No need to expand the selector. */
+ RECURSE (TREE_OPERAND (t, 2)), NULL);
+
+ case CLASS_REFERENCE_EXPR:
+ return objc_get_class_reference
+ (RECURSE (TREE_OPERAND (t, 0)));
+
+ default:
+ break;
+ }
+
+ /* Fall back to C++ processing. */
+ return NULL_TREE;
+
+#undef RECURSE
+}
+
+static void
+objcxx_init_ts (void)
+{
+ /* objc decls */
+ tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_NON_COMMON] = 1;
+ tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_NON_COMMON] = 1;
+ tree_contains_struct[KEYWORD_DECL][TS_DECL_NON_COMMON] = 1;
+ tree_contains_struct[PROPERTY_DECL][TS_DECL_NON_COMMON] = 1;
+
+ tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_WITH_VIS] = 1;
+ tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_WITH_VIS] = 1;
+ tree_contains_struct[KEYWORD_DECL][TS_DECL_WITH_VIS] = 1;
+ tree_contains_struct[PROPERTY_DECL][TS_DECL_WITH_VIS] = 1;
+
+ tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_WRTL] = 1;
+ tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_WRTL] = 1;
+ tree_contains_struct[KEYWORD_DECL][TS_DECL_WRTL] = 1;
+ tree_contains_struct[PROPERTY_DECL][TS_DECL_WRTL] = 1;
+
+ tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_MINIMAL] = 1;
+ tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_MINIMAL] = 1;
+ tree_contains_struct[KEYWORD_DECL][TS_DECL_MINIMAL] = 1;
+ tree_contains_struct[PROPERTY_DECL][TS_DECL_MINIMAL] = 1;
+
+ tree_contains_struct[CLASS_METHOD_DECL][TS_DECL_COMMON] = 1;
+ tree_contains_struct[INSTANCE_METHOD_DECL][TS_DECL_COMMON] = 1;
+ tree_contains_struct[KEYWORD_DECL][TS_DECL_COMMON] = 1;
+ tree_contains_struct[PROPERTY_DECL][TS_DECL_COMMON] = 1;
+
+ /* C++ decls */
+ tree_contains_struct[NAMESPACE_DECL][TS_DECL_NON_COMMON] = 1;
+ tree_contains_struct[USING_DECL][TS_DECL_NON_COMMON] = 1;
+ tree_contains_struct[TEMPLATE_DECL][TS_DECL_NON_COMMON] = 1;
+
+ tree_contains_struct[NAMESPACE_DECL][TS_DECL_WITH_VIS] = 1;
+ tree_contains_struct[USING_DECL][TS_DECL_WITH_VIS] = 1;
+ tree_contains_struct[TEMPLATE_DECL][TS_DECL_WITH_VIS] = 1;
+
+ tree_contains_struct[NAMESPACE_DECL][TS_DECL_WRTL] = 1;
+ tree_contains_struct[USING_DECL][TS_DECL_WRTL] = 1;
+ tree_contains_struct[TEMPLATE_DECL][TS_DECL_WRTL] = 1;
+
+ tree_contains_struct[NAMESPACE_DECL][TS_DECL_COMMON] = 1;
+ tree_contains_struct[USING_DECL][TS_DECL_COMMON] = 1;
+ tree_contains_struct[TEMPLATE_DECL][TS_DECL_COMMON] = 1;
+
+ tree_contains_struct[NAMESPACE_DECL][TS_DECL_MINIMAL] = 1;
+ tree_contains_struct[USING_DECL][TS_DECL_MINIMAL] = 1;
+ tree_contains_struct[TEMPLATE_DECL][TS_DECL_MINIMAL] = 1;
+
+ init_shadowed_var_for_decl ();
+}
+
+#include "gtype-objcp.h"