diff options
author | Dodji Seketeli <dodji@redhat.com> | 2012-09-28 12:21:33 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2012-09-28 14:21:33 +0200 |
commit | 2be9064dedcf93581e0596151454573d8c37f8be (patch) | |
tree | 40e84a8147b996e9dd05c89c447b2b45ebe33990 | |
parent | 42bace41fde0f50013e0522a3a00f8ae89313d65 (diff) | |
download | gcc-2be9064dedcf93581e0596151454573d8c37f8be.zip gcc-2be9064dedcf93581e0596151454573d8c37f8be.tar.gz gcc-2be9064dedcf93581e0596151454573d8c37f8be.tar.bz2 |
PR c++/53551 - -Wunused-local-typedefs misses uses
We don't record the use of a typedef when it's used through a
typename. Fixed thus.
Tested on x86_64-unknown-linux-gnu against trunk.
gcc/cp/
* decl.c (make_typename_type): Record the use of typedefs.
gcc/testsuite/
* g++.dg/warn/Wunused-local-typedefs-2.C: New test.
From-SVN: r191828
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C | 20 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 46d8abe..7832590 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2012-09-25 Dodji Seketeli <dodji@redhat.com> + + PR c++/53551 - -Wunused-local-typedefs misses uses + * decl.c (make_typename_type): Record the use of typedefs. + 2012-09-27 Jakub Jelinek <jakub@redhat.com> * init.c (build_new_1): Don't test TREE_CONSTANT diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 6f2c023..a7bb937 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3326,7 +3326,9 @@ make_typename_type (tree context, tree name, enum tag_types tag_type, if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl)) t = TREE_TYPE (t); - + + maybe_record_typedef_use (t); + return t; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9802c10..e9bd0b3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-09-25 Dodji Seketeli <dodji@redhat.com> + + PR c++/53551 - -Wunused-local-typedefs misses uses + * g++.dg/warn/Wunused-local-typedefs-2.C: New test. + 2012-09-28 Jakub Jelinek <jakub@redhat.com> PR target/54716 diff --git a/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C b/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C new file mode 100644 index 0000000..073e253 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C @@ -0,0 +1,20 @@ +// Origin PR c++/33255 +// { dg-options "-Wunused" } <-- should trigger -Wunused-local-typedefs +// { dg-do compile { target c++11 } } + +template <typename C> +struct structure +{ + typename C::type val; +}; + +int +main() +{ + struct context + { + using type = int; + }; + + return structure<context>{42}.val; +} |