https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94453
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jason Merrill <[email protected]>: https://gcc.gnu.org/g:9f143008c73c60e02634d6b433139a035ef7bb65 commit r10-7553-g9f143008c73c60e02634d6b433139a035ef7bb65 Author: Jason Merrill <[email protected]> Date: Sat Apr 4 11:04:55 2020 -0400 c++: Fix reuse of class constants [PR94453] The testcase hit an ICE trying to expand a TARGET_EXPR temporary cached from the other lambda-expression. This patch fixes this in two ways: 1) Avoid reusing a TARGET_EXPR from another function. 2) Avoid ending up with a TARGET_EXPR at all; the use of 'p' had become <TARGET_EXPR<NON_LVALUE_EXPR<TARGET_EXPR ...>>>, which doesn't make any sense. gcc/cp/ChangeLog 2020-04-04 Jason Merrill <[email protected]> PR c++/94453 * constexpr.c (maybe_constant_value): Use break_out_target_exprs. * expr.c (mark_use) [VIEW_CONVERT_EXPR]: Don't wrap a TARGET_EXPR in NON_LVALUE_EXPR.
