OSDN Git Service

* semantics.c (finish_non_static_data_member): Preserve dereference
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Jun 2011 20:07:13 +0000 (20:07 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 17 Jun 2011 20:07:13 +0000 (20:07 +0000)
in template.

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

gcc/cp/ChangeLog
gcc/cp/semantics.c

index 7d0a799..010f1dd 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-17  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (finish_non_static_data_member): Preserve dereference
+       in template.
+
 2011-06-16  Jason Merrill  <jason@redhat.com>
 
        PR c++/44160
index bad7acb..a436623 100644 (file)
@@ -1557,7 +1557,7 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
       tree type = TREE_TYPE (decl);
 
       if (TREE_CODE (type) == REFERENCE_TYPE)
-       type = TREE_TYPE (type);
+       /* Quals on the object don't matter.  */;
       else
        {
          /* Set the cv qualifiers.  */
@@ -1572,7 +1572,8 @@ finish_non_static_data_member (tree decl, tree object, tree qualifying_scope)
          type = cp_build_qualified_type (type, quals);
        }
 
-      return build_min (COMPONENT_REF, type, object, decl, NULL_TREE);
+      return (convert_from_reference
+             (build_min (COMPONENT_REF, type, object, decl, NULL_TREE)));
     }
   /* If PROCESSING_TEMPLATE_DECL is nonzero here, then
      QUALIFYING_SCOPE is also non-null.  Wrap this in a SCOPE_REF