https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67891

--- Comment #2 from Alexandre Oliva <aoliva at gcc dot gnu.org> ---
Created attachment 36469
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36469&action=edit
Patch that works around the problem

Ugh.  assign_parms's use of emit_block_move (as for parameter a in this
testcase) marks decls as addressable that weren't before, so they no longer
pass is_gimple_reg in spite of having SSA defs.  This is turn causes
set_parm_rtl to pass the parm down to set_rtl, instead of the default def, so
the RTL isn't associated with the partition holding the default def.  Oops.

Fortunately, ssa_default_def doesn't seem to mind being called for addressable
decls, so we can just skip the is_gimple_reg test.  I'm testing further to see
that this is indeed the case.

Reply via email to