This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix sibcall related failure ing++.old-deja/g++.other/eh1.C
- To: jakub at redhat dot com
- Subject: Re: [PATCH] Fix sibcall related failure ing++.old-deja/g++.other/eh1.C
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Fri, 16 Jun 2000 08:17:44 -0700
- Cc: rth at cygnus dot com, gcc-patches at gcc dot gnu dot org
- Organization: CodeSourcery, LLC
- References: <20000616170111.R474@sunsite.ms.mff.cuni.cz>
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