]> gcc.gnu.org Git - gcc.git/commitdiff
call.c (build_over_call): Do evaluate arg even if it has empty class type.
authorJason Merrill <jason@yorick.cygnus.com>
Sun, 3 May 1998 02:30:57 +0000 (02:30 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 3 May 1998 02:30:57 +0000 (22:30 -0400)
* call.c (build_over_call): Do evaluate arg even if it has empty
class type.
* decl.c (start_function): Don't push a member function.

From-SVN: r19525

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/decl.c

index 8596137cd8d5c2acf9042f498357d5b48a13fe6e..a1bf5c9abe98858fc2db0034bcf41b5e4a5a99a9 100644 (file)
@@ -1,3 +1,9 @@
+Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * call.c (build_over_call): Do evaluate arg even if it has empty 
+       class type.
+       * decl.c (start_function): Don't push a member function.
+
 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
 
        * Makefile.in (g++FAQ.info): Put -o option before input file.
index 5fd81f511bd892a3f49d426a608a5505774a9ff0..0c4326c81d1eba1d8c7ef7f40acfe08cd56eab9c 100644 (file)
@@ -3363,7 +3363,8 @@ build_over_call (cand, args, flags)
          /* Don't copy the padding byte; it might not have been allocated
             if to is a base subobject.  */
          if (is_empty_class (DECL_CLASS_CONTEXT (fn)))
-           return to;
+           return build (COMPOUND_EXPR, TREE_TYPE (to),
+                         cp_convert (void_type_node, arg), to);
 
          val = build (INIT_EXPR, DECL_CONTEXT (fn), to, arg);
          TREE_SIDE_EFFECTS (val) = 1;
@@ -3377,12 +3378,14 @@ build_over_call (cand, args, flags)
       tree to = stabilize_reference
        (build_indirect_ref (TREE_VALUE (converted_args), 0));
 
+      arg = build_indirect_ref (TREE_VALUE (TREE_CHAIN (converted_args)), 0);
+
       /* Don't copy the padding byte; it might not have been allocated
         if to is a base subobject.  */
       if (is_empty_class (DECL_CLASS_CONTEXT (fn)))
-       return to;
+       return build (COMPOUND_EXPR, TREE_TYPE (to),
+                     cp_convert (void_type_node, arg), to);
 
-      arg = build_indirect_ref (TREE_VALUE (TREE_CHAIN (converted_args)), 0);
       val = build (MODIFY_EXPR, TREE_TYPE (to), to, arg);
       TREE_SIDE_EFFECTS (val) = 1;
       return val;
index 56129f201e081bf4ad362765ab5b915cb37fff95..ede5d3cc14ead1e025b79a09f4e83256717f3805 100644 (file)
@@ -11620,8 +11620,9 @@ start_function (declspecs, declarator, attrs, pre_parsed_p)
   else if (pre_parsed_p == 0)
     {
       /* A specialization is not used to guide overload resolution.  */
-      if (flag_guiding_decls 
-         || !DECL_TEMPLATE_SPECIALIZATION (decl1))
+      if ((flag_guiding_decls 
+          || !DECL_TEMPLATE_SPECIALIZATION (decl1))
+         && ! DECL_FUNCTION_MEMBER_P (decl1))
        decl1 = pushdecl (decl1);
       DECL_MAIN_VARIANT (decl1) = decl1;
       fntype = TREE_TYPE (decl1);
This page took 0.101937 seconds and 5 git commands to generate.