This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [PATCH] Fix sibcall related failure ing++.old-deja/g++.other/eh1.C



  If thisblock->data.block.last_unconditional_cleanup points to last_insn
  before we start_sequence for the normal or tail call sequence and
  expand_decl_cleanup appends code to it, then last_insn is not up-to-date
  at the point we want to emit the CALL_PLACEHOLDER or normal_insns chain and
  thus emit_insns/emit_insn throws away all the cleanup stuff.

Ugh.  

I'm not sure exactly what that code is doing, so I'll let RTH approve
it.  But there's definitely a bug in your code:

  +      while (NEXT_INSN (insn));

That's a loop that's going to take either 0, or an infinite, number of
trips, unless I'm losing it. :-)

Thanks,

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]