OSDN Git Service

* cp-tree.h (DECL_USE_VTT_PARM): Remove.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Feb 2001 00:12:44 +0000 (00:12 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 17 Feb 2001 00:12:44 +0000 (00:12 +0000)
        * decl2.c (maybe_retrofit_in_chrg): Don't create it.
        * optimize.c (maybe_clone_body): Don't substitute it.
        * call.c (build_new_method_call): Check in_chrg instead.
        * init.c (expand_virtual_init): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39785 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/decl2.c
gcc/cp/init.c
gcc/cp/optimize.c

index 55f14cf..1205069 100644 (file)
@@ -1,3 +1,11 @@
+2001-02-16  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (DECL_USE_VTT_PARM): Remove.
+       * decl2.c (maybe_retrofit_in_chrg): Don't create it.
+       * optimize.c (maybe_clone_body): Don't substitute it.
+       * call.c (build_new_method_call): Check in_chrg instead.
+       * init.c (expand_virtual_init): Likewise.
+
 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
 
        * decl.c (check_tag_decl): Make sure a typedef for an anonymous
index 7e2124f..d3e5ff3 100644 (file)
@@ -4426,9 +4426,10 @@ build_new_method_call (instance, name, args, basetype_path, flags)
             or destructor, then we fetch the VTT directly.
             Otherwise, we look it up using the VTT we were given.  */
          vtt = IDENTIFIER_GLOBAL_VALUE (get_vtt_name (current_class_type));
-         vtt = build_unary_op (ADDR_EXPR, vtt, /*noconvert=*/1);
-         vtt = build (COND_EXPR, TREE_TYPE (vtt), 
-                      DECL_USE_VTT_PARM (current_function_decl),
+         vtt = decay_conversion (vtt);
+         vtt = build (COND_EXPR, TREE_TYPE (vtt),
+                      build (EQ_EXPR, boolean_type_node,
+                             current_in_charge_parm, integer_zero_node),
                       DECL_VTT_PARM (current_function_decl),
                       vtt);
          if (TREE_VIA_VIRTUAL (basebinfo))
@@ -4436,7 +4437,6 @@ build_new_method_call (instance, name, args, basetype_path, flags)
          my_friendly_assert (BINFO_SUBVTT_INDEX (basebinfo), 20010110);
          sub_vtt = build (PLUS_EXPR, TREE_TYPE (vtt), vtt,
                           BINFO_SUBVTT_INDEX (basebinfo));
-         sub_vtt = build_indirect_ref (sub_vtt, NULL);
 
          args = tree_cons (NULL_TREE, sub_vtt, args);
        }
index 5810395..f35dd95 100644 (file)
@@ -1983,13 +1983,6 @@ struct lang_decl
 #define DECL_VTT_PARM(NODE) \
   (DECL_LANG_SPECIFIC (NODE)->u2.vtt_parm)
 
-/* If there's a DECL_VTT_PARM, this is a magic variable that indicates
-   whether or not the VTT parm should be used.  In a subobject
-   constructor, `true' is substituted for this value; in a complete
-   object constructor, `false' is substituted instead.  */
-#define DECL_USE_VTT_PARM(NODE) \
-  (TREE_CHAIN (DECL_VTT_PARM (NODE)))
-
 /* Non-zero if NODE is a FUNCTION_DECL for which a VTT parameter is
    required.  */
 #define DECL_NEEDS_VTT_PARM_P(NODE)                    \
index 5c2940c..9f79148 100644 (file)
@@ -980,9 +980,6 @@ maybe_retrofit_in_chrg (fn)
       DECL_VTT_PARM (fn) = build_artificial_parm (vtt_parm_identifier, 
                                                  vtt_parm_type);
       DECL_CONTEXT (DECL_VTT_PARM (fn)) = fn;
-      DECL_USE_VTT_PARM (fn) = build_artificial_parm (NULL_TREE,
-                                                     boolean_type_node);
-      DECL_CONTEXT (DECL_USE_VTT_PARM (fn)) = fn;
     }
 }
 
index e2ac3ba..6386f67 100644 (file)
@@ -872,7 +872,8 @@ expand_virtual_init (binfo, decl)
         the vtt_parm in the case of the non-subobject constructor.  */
       vtbl = build (COND_EXPR, 
                    TREE_TYPE (vtbl), 
-                   DECL_USE_VTT_PARM (current_function_decl),
+                   build (EQ_EXPR, boolean_type_node,
+                          current_in_charge_parm, integer_zero_node),
                    vtbl2, 
                    vtbl);
     }
index e18ece9..442cac0 100644 (file)
@@ -990,9 +990,6 @@ maybe_clone_body (fn)
                  splay_tree_insert (id.decl_map,
                                     (splay_tree_key) DECL_VTT_PARM (fn),
                                     (splay_tree_value) clone_parm);
-                 splay_tree_insert (id.decl_map,
-                                    (splay_tree_key) DECL_USE_VTT_PARM (fn),
-                                    (splay_tree_value) boolean_true_node);
                  clone_parm = TREE_CHAIN (clone_parm);
                }
              /* Otherwise, map the VTT parameter to `NULL'.  */
@@ -1001,9 +998,6 @@ maybe_clone_body (fn)
                  splay_tree_insert (id.decl_map,
                                     (splay_tree_key) DECL_VTT_PARM (fn),
                                     (splay_tree_value) null_pointer_node);
-                 splay_tree_insert (id.decl_map,
-                                    (splay_tree_key) DECL_USE_VTT_PARM (fn),
-                                    (splay_tree_value) boolean_false_node);
                }
            }
          /* Map other parameters to their equivalents in the cloned