This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH]: Fix PR rtl-optimization/29841: cfgbuild.c: control_flow_insn_p () .
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: Maxim Kuvyrkov <mkuvyrkov at ispras dot ru>
- Cc: gcc-patches at gcc dot gnu dot org, Jan Hubicka <jh at suse dot cz>
- Date: Wed, 18 Apr 2007 15:50:28 +0200
- Subject: Re: [PATCH]: Fix PR rtl-optimization/29841: cfgbuild.c: control_flow_insn_p () .
- References: <45AB3F32.4020808@ispras.ru> <200704181217.55953.ebotcazou@libertysurf.fr> <46261E69.2000207@ispras.ru>
> The assert expects an insn that is associated with bb->succs edges (i.e.
> an insn after moving which we should somehow adjust CFG to maintain
> instruction stream and CFG coherent). As I understand a block with a
> trapping load at the end will have edges to all places control can be
> transfered to. In that case, if scheduler front end supports movement
> of instruction that affect control flow, any such insn will be handled
> in a universal way.
There are also noreturn calls and, now, unconditional traps; neither has
successor edges in the CFG.
> I'm sure what do you mean. RGN mode doesn't have support to move such
> instructions - EBB mode does.
Is sched_analyze_insn not used in both mode? If so, do you mean that
/* 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. */
is totally useless in EBB mode?
--
Eric Botcazou