aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2012-09-28 12:21:33 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2012-09-28 14:21:33 +0200
commit2be9064dedcf93581e0596151454573d8c37f8be (patch)
tree40e84a8147b996e9dd05c89c447b2b45ebe33990
parent42bace41fde0f50013e0522a3a00f8ae89313d65 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-local-typedefs-2.C20
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;
+}