From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id 051773858038; Fri, 4 Mar 2022 08:54:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 051773858038 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-7473] tree: Fix up warn_deprecated_use [PR104627] X-Act-Checkin: gcc X-Git-Author: Jakub Jelinek X-Git-Refname: refs/heads/master X-Git-Oldrev: 609e8c492d62d92465460eae3d43dfc4b2c68288 X-Git-Newrev: 49bc9c6c1ef9441c3db586882e1985da3be9cfa1 Message-Id: <20220304085424.051773858038@sourceware.org> Date: Fri, 4 Mar 2022 08:54:24 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Mar 2022 08:54:24 -0000 https://gcc.gnu.org/g:49bc9c6c1ef9441c3db586882e1985da3be9cfa1 commit r12-7473-g49bc9c6c1ef9441c3db586882e1985da3be9cfa1 Author: Jakub Jelinek Date: Fri Mar 4 09:53:36 2022 +0100 tree: Fix up warn_deprecated_use [PR104627] The r12-7287-g1b71bc7c8b18bd1b change improved the -Wdeprecated warning for C++, but regressed it for C, in particular in gcc.dg/deprecated.c testcase we now report a type that actually isn't deprecated as deprecated instead of the one that is deprecated. The following change tries to find the middle ground between what we used to do before and what r12-7287 change does. If TYPE_STUB_DECL (node) is non-NULL (that is what happens with those C tests), then it will do what it used to do before (just smarter, there is no need to lookup_attribute when it is called again a few lines below this), if it is NULL, it will try TYPE_STUB_DECL (TYPE_MAIN_VARIANT (node)) - what the deprecated-16.C test needs. 2022-03-04 Jakub Jelinek PR c/104627 * tree.cc (warn_deprecated_use): For types prefer to use node and only use TYPE_MAIN_VARIANT (node) if TYPE_STUB_DECL (node) is NULL. Diff: --- gcc/tree.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/tree.cc b/gcc/tree.cc index 4522d90c4d9..d6f900c53b4 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -12047,8 +12047,11 @@ warn_deprecated_use (tree node, tree attr) attr = DECL_ATTRIBUTES (node); else if (TYPE_P (node)) { - tree decl = TYPE_STUB_DECL (TYPE_MAIN_VARIANT (node)); + tree decl = TYPE_STUB_DECL (node); if (decl) + attr = TYPE_ATTRIBUTES (TREE_TYPE (decl)); + else if ((decl = TYPE_STUB_DECL (TYPE_MAIN_VARIANT (node))) + != NULL_TREE) { node = TREE_TYPE (decl); attr = TYPE_ATTRIBUTES (node);