OSDN Git Service

PR c++/47783
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Feb 2011 20:44:14 +0000 (20:44 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Feb 2011 20:44:14 +0000 (20:44 +0000)
* cvt.c (convert_from_reference): Call mark_exp_read.

* g++.dg/warn/Wunused-parm-4.C: New test.

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

gcc/cp/ChangeLog
gcc/cp/cvt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wunused-parm-4.C [new file with mode: 0644]

index 13de6bd..ae368a1 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47783
+       * cvt.c (convert_from_reference): Call mark_exp_read.
+
 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/47172
index 36c0703..8ab0001 100644 (file)
@@ -512,6 +512,7 @@ convert_from_reference (tree val)
       tree t = TREE_TYPE (TREE_TYPE (val));
       tree ref = build1 (INDIRECT_REF, t, val);
 
+      mark_exp_read (val);
        /* We *must* set TREE_READONLY when dereferencing a pointer to const,
          so that we get the proper error message if the result is used
          to assign to.  Also, &* is supposed to be a no-op.  */
index ad376c2..4d6fae0 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47783
+       * g++.dg/warn/Wunused-parm-4.C: New test.
+
 2011-02-17  Alexandre Oliva  <aoliva@redhat.com>
            Jan Hubicka  <jh@suse.cz>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-parm-4.C b/gcc/testsuite/g++.dg/warn/Wunused-parm-4.C
new file mode 100644 (file)
index 0000000..fbad380
--- /dev/null
@@ -0,0 +1,24 @@
+// PR c++/47783
+// { dg-do compile }
+// { dg-options "-Wunused -W" }
+
+struct R
+{
+  int &i;
+};
+
+void
+foo (R r, int &s)
+{
+  r.i = 7;
+  s = 8;
+}
+
+int
+bar ()
+{
+  int x = 1, y = 1;
+  R r = { x };
+  foo (r, y);
+  return x + y;
+}