OSDN Git Service

* c-common.c (decl_attributes): Only take a single attributes
[pf3gnuchains/gcc-fork.git] / gcc / cp / cp-tree.h
index e820303..66ce4fb 100644 (file)
@@ -55,7 +55,6 @@ Boston, MA 02111-1307, USA.  */
       BASELINK_P (in TREE_LIST)
       ICS_ELLIPSIS_FLAG (in _CONV)
       BINFO_ACCESS (in BINFO)
-      BV_GENERATE_THUNK_WITH_VTABLE_P (in TREE_LIST)
    2: IDENTIFIER_OPNAME_P.
       TYPE_POLYMORHPIC_P (in _TYPE)
       ICS_THIS_FLAG (in _CONV)
@@ -133,10 +132,6 @@ Boston, MA 02111-1307, USA.  */
 
      The BV_FN is the declaration for the virtual function itself.
 
-     The BV_OVERRIDING_BASE is the binfo for the final overrider for
-     this function.  (That binfo's BINFO_TYPE will always be the same
-     as the DECL_CLASS_CONTEXT for the function.)
-
    BINFO_VTABLE
      Sometimes this is a VAR_DECL.  Under the new ABI, it is instead
      an expression with POINTER_TYPE pointing that gives the value
@@ -868,6 +863,7 @@ struct cp_language_function
   tree x_eh_spec_block;
   tree x_in_charge_parm;
   tree x_vtt_parm;
+  tree x_return_value;
 
   tree *x_vcalls_possible_p;
 
@@ -958,7 +954,12 @@ struct cp_language_function
 
 #define in_function_try_handler cp_function_chain->in_function_try_handler
 
-extern tree current_function_return_value;
+/* Expression always returned from function, or error_mark_node
+   otherwise, for use by the automatic named return value optimization.  */
+
+#define current_function_return_value \
+  (cp_function_chain->x_return_value)
+
 extern tree global_namespace;
 
 #define ansi_opname(CODE) \
@@ -1123,10 +1124,6 @@ extern int flag_access_control;
 
 extern int flag_check_new;
 
-/* Nonnull if we want to dump class heirarchies. */
-
-extern const char *flag_dump_class_layout;
-
 \f
 /* C++ language-specific tree codes.  */
 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,
@@ -1632,6 +1629,10 @@ struct lang_type
    inheritance is indicated by the absence of the other two flags, not
    by TREE_VIA_PRIVATE, which is unused.  */
 
+/* Mark the binfo, whether shared or not. Each instance of a virtual
+   base can be separately marked.  */
+#define BINFO_UNSHARED_MARKED(NODE) TREE_LANG_FLAG_0(NODE)
+
 /* Nonzero means marked by DFS or BFS search, including searches
    by `get_binfo' and `get_base_distance'.  */
 #define BINFO_MARKED(NODE) (TREE_VIA_VIRTUAL(NODE)?CLASSTYPE_MARKED(BINFO_TYPE(NODE)):TREE_LANG_FLAG_0(NODE))
@@ -1736,14 +1737,6 @@ struct lang_type
 /* Nonzero if we should use a virtual thunk for this entry.  */
 #define BV_USE_VCALL_INDEX_P(NODE) \
    (TREE_LANG_FLAG_0 (NODE))
-
-/* Nonzero if we should generate this thunk when the vtable that
-   references it is emitted, rather than with the final overrider.  */
-#define BV_GENERATE_THUNK_WITH_VTABLE_P(NODE) \
-  (TREE_LANG_FLAG_1 (NODE))
-
-/* The most derived class.  */
-
 \f
 /* Nonzero for TREE_LIST node means that this list of things
    is a list of parameters, as opposed to a list of expressions.  */
@@ -1806,8 +1799,7 @@ struct lang_decl_flags
   unsigned global_dtor_p : 1;
   unsigned assignment_operator_p : 1;
   unsigned anticipated_p : 1;
-  unsigned generate_with_vtable_p : 1;
-  /* Two unused bits.  */
+  /* Three unused bits.  */
 
   union {
     /* In a FUNCTION_DECL, VAR_DECL, TYPE_DECL, or TEMPLATE_DECL, this
@@ -3036,11 +3028,6 @@ enum ptrmemfunc_vbit_where_t
 #define THUNK_VCALL_OFFSET(DECL) \
   (DECL_LANG_SPECIFIC (DECL)->decl_flags.u2.vcall_offset)
 
-/* Nonzero if this thunk should be generated with the vtable that
-   references it.  */
-#define THUNK_GENERATE_WITH_VTABLE_P(DECL) \
-  (DECL_LANG_SPECIFIC (DECL)->decl_flags.generate_with_vtable_p)
-
 /* These macros provide convenient access to the various _STMT nodes
    created when parsing template declarations.  */
 #define TRY_STMTS(NODE)         TREE_OPERAND (TRY_BLOCK_CHECK (NODE), 0)
@@ -3716,7 +3703,6 @@ extern tree get_vtable_decl                     PARAMS ((tree, int));
 extern void add_method                         PARAMS ((tree, tree, int));
 extern int currently_open_class                        PARAMS ((tree));
 extern tree currently_open_derived_class       PARAMS ((tree));
-extern tree get_vfield_offset                  PARAMS ((tree));
 extern void duplicate_tag_error                        PARAMS ((tree));
 extern tree finish_struct                      PARAMS ((tree, tree));
 extern void finish_struct_1                    PARAMS ((tree));
@@ -3749,6 +3735,7 @@ extern tree get_primary_binfo                   PARAMS ((tree));
 /* in cvt.c */
 extern tree convert_to_reference               PARAMS ((tree, tree, int, int, tree));
 extern tree convert_from_reference             PARAMS ((tree));
+extern tree convert_lvalue                     PARAMS ((tree, tree));
 extern tree convert_pointer_to_real            PARAMS ((tree, tree));
 extern tree convert_pointer_to                 PARAMS ((tree, tree));
 extern tree ocp_convert                                PARAMS ((tree, tree, int, int));
@@ -4083,7 +4070,7 @@ extern void init_method                           PARAMS ((void));
 extern void set_mangled_name_for_decl           PARAMS ((tree));
 extern tree build_opfncall                     PARAMS ((enum tree_code, int, tree, tree, tree));
 extern tree hack_identifier                    PARAMS ((tree, tree));
-extern tree make_thunk                         PARAMS ((tree, tree, tree, int));
+extern tree make_thunk                         PARAMS ((tree, tree, tree));
 extern void use_thunk                          PARAMS ((tree, int));
 extern void synthesize_method                  PARAMS ((tree));
 extern tree implicitly_declare_fn               PARAMS ((special_function_kind, tree, int));
@@ -4202,6 +4189,7 @@ extern tree context_for_name_lookup               PARAMS ((tree));
 extern tree lookup_conversions                 PARAMS ((tree));
 extern tree binfo_for_vtable                   PARAMS ((tree));
 extern tree binfo_from_vbase                   PARAMS ((tree));
+extern tree look_for_overrides_here            PARAMS ((tree, tree));
 extern tree dfs_walk                            PARAMS ((tree,
                                                       tree (*) (tree, void *),
                                                       tree (*) (tree, void *),
@@ -4367,7 +4355,7 @@ extern int promotes_to_aggr_type          PARAMS ((tree, enum tree_code));
 extern int is_aggr_type_2                      PARAMS ((tree, tree));
 extern const char *lang_printable_name         PARAMS ((tree, int));
 extern tree build_exception_variant            PARAMS ((tree, tree));
-extern tree copy_template_template_parm                PARAMS ((tree, tree));
+extern tree bind_template_template_parm                PARAMS ((tree, tree));
 extern tree array_type_nelts_total             PARAMS ((tree));
 extern tree array_type_nelts_top               PARAMS ((tree));
 extern tree break_out_target_exprs             PARAMS ((tree));