https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86669
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 45105 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45105&action=edit gcc9-pr86669.patch Indeed, it does. clone_body has code to unshare DECL_INITIAL, but it does so only for FOR_EACH_LOCAL_DECL decls, the artificial temporary for std::initializer_list in this case isn't tracked among those. The following patch fixes it at least when looking at the testcase using a cross-compiler, but I have no way to 1) test it on darwin 2) check whether the testcase in the patch actually fails at runtime without the patch and is fixed with it. I'll bootstrap/regtest the patch on x86_64-linux and i686-linux, can somebody please do the 1) and 2)? Thanks.