On Tue, Sep 12, 2023 at 01:27:44PM -0400, Jason Merrill via Gcc-patches wrote:
> Tested x86_64-pc-linux-gnu, applying to trunk.
>
> -- 8< --
>
> The argument might not already be an integer.
>
> PR c++/111357
>
> gcc/cp/ChangeLog:
>
> * pt.cc (expand_integer_pack): Convert argument to int.
>
> gcc/testsuite/ChangeLog:
>
> * g++.dg/ext/integer-pack7.C: New test.
> ---
> gcc/cp/pt.cc | 2 ++
> gcc/testsuite/g++.dg/ext/integer-pack7.C | 38 ++++++++++++++++++++++++
> 2 files changed, 40 insertions(+)
> create mode 100644 gcc/testsuite/g++.dg/ext/integer-pack7.C
>
> diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
> index 838179d5fe3..b583c11eb99 100644
> --- a/gcc/cp/pt.cc
> +++ b/gcc/cp/pt.cc
> @@ -3793,6 +3793,8 @@ expand_integer_pack (tree call, tree args,
> tsubst_flags_t complain,
> }
> else
> {
> + hi = perform_implicit_conversion_flags (integer_type_node, hi,
> complain,
> + LOOKUP_IMPLICIT);
FWIW, we have perform_implicit_conversion for this.
Marek