From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1888) id 0874E3857C44; Sun, 22 Oct 2023 20:14:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0874E3857C44 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1698005654; bh=apOsiC597xcLwlKK/Kgzq9Kk8HT7zteyy1stB56ci2I=; h=From:To:Subject:Date:From; b=fttVbFlVVhiYZDGUB4u4EZylz23Y7qRki20LVLz4+aUnVM83Eq93ol5hlHLeVwkXK 55VbR/HOT3US5guOJ3NiVQXKIYV45DJ7bee9THoRn/OMI8Fqp2QVVaxq5TizKFJt+i r+9TElaOKAAxQzQE6HWQXW5wpVulLc2kbsc+FLlA= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Patrick Palka To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-4829] objc++: type/expr tsubst conflation [PR111920] X-Act-Checkin: gcc X-Git-Author: Patrick Palka X-Git-Refname: refs/heads/master X-Git-Oldrev: 47b634a308c59f728783513123e7a9576fdc82aa X-Git-Newrev: 80ddcb9c8f9b5a387f379e1db39bc6f3680bd52f Message-Id: <20231022201414.0874E3857C44@sourceware.org> Date: Sun, 22 Oct 2023 20:14:14 +0000 (GMT) List-Id: https://gcc.gnu.org/g:80ddcb9c8f9b5a387f379e1db39bc6f3680bd52f commit r14-4829-g80ddcb9c8f9b5a387f379e1db39bc6f3680bd52f Author: Patrick Palka Date: Sun Oct 22 16:13:33 2023 -0400 objc++: type/expr tsubst conflation [PR111920] After r14-4796-g3e3d73ed5e85e7, tsubst_copy_and_build (now named tsubst_expr) no longer dispatches to tsubst for type trees, and callers have to do it themselves if appropriate. This patch makes some overlooked adjustments to Objective-C++-specific code paths. PR objc++/111920 gcc/cp/ChangeLog: * pt.cc (tsubst_expr) : Use tsubst instead of tsubst_expr. gcc/objcp/ChangeLog: * objcp-lang.cc (objcp_tsubst_expr) : Use tsubst instead of tsubst_expr for type operands. Diff: --- gcc/cp/pt.cc | 2 +- gcc/objcp/objcp-lang.cc | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 210c6cb9e4d3..1c1c93131180 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -20261,7 +20261,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) op1 = TREE_OPERAND (t, 0); ++cp_unevaluated_operand; ++c_inhibit_evaluation_warnings; - op1 = tsubst_expr (op1, args, complain, in_decl); + op1 = tsubst (op1, args, complain, in_decl); --cp_unevaluated_operand; --c_inhibit_evaluation_warnings; RETURN (objc_build_encode_expr (op1)); diff --git a/gcc/objcp/objcp-lang.cc b/gcc/objcp/objcp-lang.cc index 5b04cd66290f..ee39aece8484 100644 --- a/gcc/objcp/objcp-lang.cc +++ b/gcc/objcp/objcp-lang.cc @@ -66,8 +66,14 @@ objcp_tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl) RECURSE (TREE_OPERAND (t, 2)), NULL); case CLASS_REFERENCE_EXPR: - return objc_get_class_reference - (RECURSE (TREE_OPERAND (t, 0))); + { + tree ident = TREE_OPERAND (t, 0); + if (TYPE_P (ident)) + ident = tsubst (ident, args, complain, in_decl); + else + ident = RECURSE (ident); + return objc_get_class_reference (ident); + } default: break;