diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wunused-var-10.C | 42 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wunused-var-11.C | 33 |
5 files changed, 86 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b949f5a..c54ed02 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,10 @@ 2010-06-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/44412 + * typeck.c (build_class_member_access_expr): Call mark_exp_read + on object for static data members. + +2010-06-04 Jakub Jelinek <jakub@redhat.com> Jason Merrill <jason@redhat.com> PR c++/44362 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index a7d04dd..3a7610a 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -2229,6 +2229,7 @@ build_class_member_access_expr (tree object, tree member, { /* A static data member. */ result = member; + mark_exp_read (object); /* If OBJECT has side-effects, they are supposed to occur. */ if (TREE_SIDE_EFFECTS (object)) result = build2 (COMPOUND_EXPR, TREE_TYPE (result), object, result); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd4b2c2..7f8d144 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2010-06-04 Jakub Jelinek <jakub@redhat.com> + PR c++/44412 + * g++.dg/warn/Wunused-var-10.C: New test. + * g++.dg/warn/Wunused-var-11.C: New test. + PR c++/44362 * c-c++-common/Wunused-var-10.c: New test. diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-10.C b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C new file mode 100644 index 0000000..ffdb893 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C @@ -0,0 +1,42 @@ +// PR c++/44412 +// { dg-do compile } +// { dg-options "-Wunused" } + +struct S +{ + static const int a = 3; + static int b; + int c; +}; + +const int S::a; +int S::b = 4; + +int +f1 () +{ + S s; + return s.a; +} + +int +f2 () +{ + S s; + return s.b; +} + +void +f3 () +{ + S s; // { dg-warning "set but not used" } + s.c = 6; +} + +int +f4 () +{ + S s; + s.c = 6; + return s.c; +} diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-11.C b/gcc/testsuite/g++.dg/warn/Wunused-var-11.C new file mode 100644 index 0000000..c7c1bf3 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-var-11.C @@ -0,0 +1,33 @@ +// PR c++/44412 +// { dg-do compile } +// { dg-options "-Wunused" } + +struct S +{ + int foo (); + static int bar (); +}; + +int S::foo () +{ + return 5; +} + +int S::bar () +{ + return 6; +} + +int +f1 () +{ + S s; + return s.foo (); +} + +int +f2 () +{ + S s; + return s.bar (); +} |