]> gcc.gnu.org Git - gcc.git/commitdiff
re PR c++/47783 (Warning 'set but not used' [-Wunused-but-set-parameter] incorrectly...
authorJakub Jelinek <jakub@redhat.com>
Thu, 17 Feb 2011 20:44:14 +0000 (21:44 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 17 Feb 2011 20:44:14 +0000 (21:44 +0100)
PR c++/47783
* cvt.c (convert_from_reference): Call mark_exp_read.

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

From-SVN: r170255

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 13de6bd9041fc9a4c95ccf73295395a79eefe57f..ae368a1e27c5cf58a4fd127ee088b73f9a1a9e78 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 36c07037a8de3df847ba7b9d1c49964fc82dcd16..8ab0001143253ac07468447673b62f9a89d5b8a3 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 ad376c2bb65104b41f3c14dc7414a22939338e8d..4d6fae0ddd0e92453c44ea52b953b7b296cc07b4 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;
+}
This page took 0.083375 seconds and 5 git commands to generate.