This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: PPC EH failure
- From: Richard Henderson <rth at redhat dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org
- Date: Thu, 7 Mar 2002 10:46:21 -0800
- Subject: Re: PPC EH failure
- References: <20020307160142.GO911@atrey.karlin.mff.cuni.cz>
On Thu, Mar 07, 2002 at 05:01:42PM +0100, Jan Hubicka wrote:
> It is obviously incorrect to move the use
> after EH_REGION insn and sheduler already do contain code:
> /* If this instruction can throw an exception, then moving it changes
> where block boundaries fall. This is mighty confusing elsewhere.
> Therefore, prevent such an instruction from being moved. */
> if (can_throw_internal (insn))
> reg_pending_barrier = true;
> that does care it, but it does not hit on use as it barriers only registers,
Grr. Ok, fix this by changing sched-rgn.c add_branch_dependences
while (GET_CODE (insn) == CALL_INSN
|| GET_CODE (insn) == JUMP_INSN
|| (GET_CODE (insn) == INSN
&& (GET_CODE (PATTERN (insn)) == USE
|| GET_CODE (PATTERN (insn)) == CLOBBER
+ || can_throw_internal (insn)
#ifdef HAVE_cc0
|| sets_cc0_p (PATTERN (insn))
#endif
))
|| GET_CODE (insn) == NOTE)
r~