https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82410
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It is the "nor whether SUB is a CONSTRUCTOR." part of the patch that causes this. The PLACEHOLDER_EXPR's type is S, while the VAR_DECL passed as second argument to replace_placeholders is a temporary with A type. sub is: main()::S::operator main()::A (&TARGET_EXPR <D.2375, {.p=(int &) &l, .x=*(&<PLACEHOLDER_EXPR struct S>)->p}>); Don't know replace_placeholders enough to fix this myself.