> Hi, > this patch moves DECL_ARGUMENTS into FUNCTION_DECL. For this I needed to > solve > reuse in C++ and objC frontends. In C++ I think I actually run out of places > to use for TEMPLATE_DECL (well, perhaps DECL_ATTRIBUTES but I would definitely > run out of pointers fro DECL_RESULT I want to move next) so I decided to go > ahead and allow lang frontends to make their own structures for their own > decls > as we currently support for exceptional trees. > > This allows me to make TEMPLATE_DECL decl_common and save there quite few > pointers > that go with decl_non_common (rtl, assembler name, symtab etc). > > I think other DECL_NON_COMMON declarations in C++ FE can now be put on the > diet > too. > > In objc I simply used DECL_SIZE. I have noticed that the accesors was never > updated for type checking and added these (sincerely hope I won't be asked to > fix bugs found by those at daily basis). > > Similarly objc can use some custom layouts for the decls, but I did not do it. > > THe added tree_size langhook is there only becuase I changed generic code to > die when lang does not handle its decls correctly. > > Ada/C++/Fortran do not add its own decl trees. > > Honza > > * tree.c (tree_code_size): Add TRANSLATION_UNIT_DECL, > NAMESPACE_DECL, IMPORTED_DECL and NAMELIST_DECL; > call langhook for unknown declaration. > (find_decls_types_r): Do not walk DECL_ARGUMENT_FLD. > * tree.h (DECL_ARGUMENTS): Update. > * print-tree.c (print_node): Update. > * tree-core.h (tree_decl_non_common): Remove arguments. > (tree_function_decl): Add arguments. > > * class.c (build_clone): Do not clear assembler names of > templates. > * decl.c (cp_tree_node_structure): Add TEMPLATE_DECL. > * cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL > as a special case return sizeof (struct tree_decl_non_common) > for other decls. > (cp_common_init_ts): Do not initialize NAMESPACE_DECL; > initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON. > * cp/cp-tree.h (tree_template_decl): New structure. > (cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL. > (union cp_lang_tree_node): Add template_decl. > (DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update. > > * lto/lto.c (mentions_vars_p_decl_non_common): Skip > DECL_ARGUMENT_FLD. > mentions_vars_p_function): Do DECL_ARGUMENTS. > (lto_fixup_prevailing_decls): Update. > > * objc-act.c (objc_common_tree_size): New function. > * objc-act.h (KEYWORD_KEY_NAME, KEYWORD_ARG_NAME): Add type > checking. > (INSTANCE_METHOD_OR_CLASS_METHOD_DECL_CHECK): New macro. > (METHOD_SEL_NAME, METHOD_SEL_ARGS, METHOD_ADD_ARGS, > METHOD_ADD_ARGS_ELLIPSIS_P, METHOD_DEFINITION, METHOD_ENCODING, > METHOD_TYPE_ATTRIBUTES, METHOD_PROPERTY_CONTEXT): Add type checking. > (METHOD_SEL_ARGS): Use decl_common.size instead of > decl_non_common.result. > (PROPERTY_NAME, PROPERTY_GETTER_NAME, PROPERTY_SETTER_NAME, > PROPERTY_READONLY, PROPERTY_NONATOMIC, PROPERTY_ASSIGN_SEMANTICS, > PROPERTY_IVAR_NAME, PROPERTY_DYNAMIC, PROPERTY_HAS_NO_GETTER, > PROPERTY_HAS_NO_SETTER, PROPERTY_OPTIONAL): Add type checking. > (objc_common_tree_size): Declare. > * objc/objc-lang.c (LANG_HOOKS_TREE_SIZE): New macro.
Ping... I would really like to finish the transition here and decompose decl_non_common/decl_with_vis so we can get the inehriatance hiearchy more explicit. Honza