On 11/28/18 3:42 AM, Jakub Jelinek wrote:
Whenever we need to clone a cdtor (either because the target doesn't support
aliases the way we need, e.g. initlist105.C testcase on darwin, where it has
been originally reported, or when it has virtual bases, like the made up
initlist106.C on x86_64-linux), we rely on DECL_INITIAL of the local
variables being unshared, because the tree unsharing gimplify.c performs
doesn't unshare DECL_INITIAL.  clone_body has some code to recurse on the
DECL_INITIAL, but it handles just decls FOR_EACH_LOCAL_DECL walks.  I
believe it is generally ok that not all temporaries are covered in local
decls, the gimplifier should take care of those fine if we don't need
debug info for them.

I think any temporaries that have DECL_INITIAL should be pushed so that they end up in local_decls. set_up_extended_ref_temp already adds a DECL_EXPR for it, I guess we need a pushdecl as well. Though the comment for get_temp_regvar suggests that this is problematic somehow.

Jason

Reply via email to