]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: constexpr, trivial, and non-alias target [PR111075]
authorJason Merrill <jason@redhat.com>
Tue, 15 Apr 2025 15:23:57 +0000 (11:23 -0400)
committerJason Merrill <jason@redhat.com>
Tue, 15 Apr 2025 19:14:57 +0000 (15:14 -0400)
commit628aecb050bbbc4bb0bd4468c474623e20d64e21
tree4af3988ecb402fa1298680ad5c2b71b124b7dcb9
parent7f56a8e8ad1c33d358e9e09fcbaf263c2caba1b9
c++: constexpr, trivial, and non-alias target [PR111075]

On Darwin and other targets with !can_alias_cdtor, we instead go to
maybe_thunk_ctor, which builds a thunk function that calls the general
constructor.  And then cp_fold tries to constant-evaluate that call, and we
ICE because we don't expect to ever be asked to constant-evaluate a call to
a trivial function.

No new test because this fixes g++.dg/torture/tail-padding1.C on affected
targets.

PR c++/111075

gcc/cp/ChangeLog:

* constexpr.cc (cxx_eval_call_expression): Allow trivial
call from a thunk.
gcc/cp/constexpr.cc