diff options
author | Patrick Palka <ppalka@redhat.com> | 2022-11-15 09:31:54 -0500 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2022-11-15 09:31:54 -0500 |
commit | c52c322627dd0f206b4bf7f7c94ab42bf5e61b6f (patch) | |
tree | d14f832563460b440ada6a3ed0b9da5001e33755 /gcc/cp/init.cc | |
parent | c68c468e0ebb6922816367a06e4ab02bad08eb08 (diff) | |
download | gcc-c52c322627dd0f206b4bf7f7c94ab42bf5e61b6f.zip gcc-c52c322627dd0f206b4bf7f7c94ab42bf5e61b6f.tar.gz gcc-c52c322627dd0f206b4bf7f7c94ab42bf5e61b6f.tar.bz2 |
c++: remove function_p parm from tsubst_copy_and_build
The function_p parameter of tsubst_copy_and_build (added in r69316) is
inspected only in its IDENTIFIER_NODE case, where it controls whether we
diagnose unqualified name lookup failure for the given identifier. But
I think ever since r173965, we never substitute an IDENTIFIER_NODE with
function_p=true for which the lookup can possibly fail, and therefore
the flag is effectively unneeded.
Before that commit, we would incorrectly repeat unqualified lookup for
an ADL-enabled CALL_EXPR at instantiation time, which naturally could
fail and thus motivated the flag. Afterwards, we no longer substitute
an IDENTIFIER_NODE callee when koenig_p is true, so the flag isn't needed
for its original purpose. What about when koenig_p=false? Apparently
we still may have an IDENTIFIER_NODE callee in this case, namely when
unqualified name lookup found a dependent local function declaration,
but repeating that lookup can't fail (ditto for USING_DECL callees).
So this patch removes this effectively unneeded parameter from
tsubst_copy_and_build. It also updates an outdated comment in the
CALL_EXPR case about when we may see an IDENTIFIER_NODE callee with
koenig_p=false.
gcc/cp/ChangeLog:
* cp-lang.cc (objcp_tsubst_copy_and_build): Remove
function_p parameter.
* cp-objcp-common.h (objcp_tsubst_copy_and_build):
Likewise.
* cp-tree.h (tsubst_copy_and_build): Likewise.
* init.cc (get_nsdmi): Adjust calls to tsubst_copy_and_build.
* pt.cc (expand_integer_pack): Likewise.
(instantiate_non_dependent_expr_internal): Likewise.
(tsubst_function_decl): Likewise.
(tsubst_arg_types): Likewise.
(tsubst_exception_specification): Likewise.
(tsubst): Likewise.
(tsubst_copy_asm_operands): Likewise.
(tsubst_expr): Likewise.
(tsubst_non_call_postfix_expression): Likewise.
(tsubst_lambda_expr): Likewise.
(tsubst_copy_and_build_call_args): Likewise.
(tsubst_copy_and_build): Remove function_p parameter
and adjust function comment. Adjust recursive calls.
<case CALL_EXPR>: Update outdated comment about when
we can see an IDENTIFIER_NODE callee with koenig_p=false.
(maybe_instantiate_noexcept): Adjust calls to
tsubst_copy_and_build.
gcc/objcp/ChangeLog:
* objcp-lang.cc (objcp_tsubst_copy_and_build): Remove
function_p parameter.
Diffstat (limited to 'gcc/cp/init.cc')
-rw-r--r-- | gcc/cp/init.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc index 3d5d390..fee4909 100644 --- a/gcc/cp/init.cc +++ b/gcc/cp/init.cc @@ -622,7 +622,7 @@ get_nsdmi (tree member, bool in_ctor, tsubst_flags_t complain) /* Do deferred instantiation of the NSDMI. */ init = (tsubst_copy_and_build (init, DECL_TI_ARGS (member), - complain, member, /*function_p=*/false, + complain, member, /*integral_constant_expression_p=*/false)); init = digest_nsdmi_init (member, init, complain); |