re PR c++/58305 (Deprecation warning for class not raised when not assigning to a...
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 4 Sep 2013 08:57:26 +0000 (08:57 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 4 Sep 2013 08:57:26 +0000 (08:57 +0000)
/cp
2013-09-03  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58305
* typeck2.c (build_functional_cast): Maybe warn_deprecated_use.

/testsuite
2013-09-03  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58305
* g++.dg/warn/deprecated-8.C: New.

From-SVN: r202242

gcc/cp/ChangeLog
gcc/cp/typeck2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/deprecated-8.C [new file with mode: 0644]

index 823046b9ddb6ebe558fa53b142ef60bbfa601254..c28f114490e351bed05f553646c037384b75e036 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58305
+       * typeck2.c (build_functional_cast): Maybe warn_deprecated_use.
+
 2013-09-03  Mike Stump  <mikestump@comcast.net>
 
        * Make-lang.in (cp/lambda.o): Add dependencies.
index 79329397a8b45aadf664e4a955bf8645ecd23cc7..8882816666c1162450908bdeb9c80e432a5c1932 100644 (file)
@@ -1761,7 +1761,14 @@ build_functional_cast (tree exp, tree parms, tsubst_flags_t complain)
     return error_mark_node;
 
   if (TREE_CODE (exp) == TYPE_DECL)
-    type = TREE_TYPE (exp);
+    {
+      type = TREE_TYPE (exp);
+
+      if (complain & tf_warning
+         && TREE_DEPRECATED (type)
+         && DECL_ARTIFICIAL (exp))
+       warn_deprecated_use (type, NULL_TREE);
+    }
   else
     type = exp;
 
index dbc88b17e164f31d067fb0b659fb4cc7773dfdd9..40a7522a7c7ea435a3143f61b55dbdde829e8c1a 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-04  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58305
+       * g++.dg/warn/deprecated-8.C: New.
+
 2013-09-03  Jeff Law  <law@redhat.com>
 
        * tree-ssa/ssa-dom-thread-3.c: Update due to changes in debug
diff --git a/gcc/testsuite/g++.dg/warn/deprecated-8.C b/gcc/testsuite/g++.dg/warn/deprecated-8.C
new file mode 100644 (file)
index 0000000..8018110
--- /dev/null
@@ -0,0 +1,15 @@
+// PR c++/58305
+
+class ToBeDeprecated {
+} __attribute__ ((deprecated ("deprecated!")));
+
+typedef ToBeDeprecated NotToBeDeprecated; // { dg-warning "'ToBeDeprecated' is deprecated" }
+
+int main() {
+
+  ToBeDeprecated();    // { dg-warning "'ToBeDeprecated' is deprecated" }
+  ToBeDeprecated x;    // { dg-warning "'ToBeDeprecated' is deprecated" }
+
+  NotToBeDeprecated();
+  NotToBeDeprecated y;
+}