This is the mail archive of the gcc@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]
Other format: [Raw text]

Re: Question on fixup_abnormal_edges


Hi,

On Tue, 1 Oct 2002, Jan Hubicka wrote:

> >      for (e = bb->succ; e; e = e->succ_next)
> >        if (e->flags & EDGE_FALLTHRU)
> >          break;
> >      [...]
> >      insert_insn_on_edge (seq, e);
> >
> >
> >  Is it expectable to have a null "e" after the loop, or is this a
> >  "should never happen" ?
>
> It should never happen.  Where are you getting it?

It can happen.  The relevant sequence in 3.2 and HEAD branch reads as
below, including the comment explaining it.

          for (e = bb->succ; e; e = e->succ_next)
            if (e->flags & EDGE_FALLTHRU)
              break;
...
                  /* Sometimes there's still the return value USE.
                     If it's placed after a trapping call (i.e. that
                     call is the last insn anyway), we have no fallthru
                     edge.  Simply delete this use and don't try to insert
                     on the non-existant edge.  */
                  if (GET_CODE (PATTERN (insn)) != USE)
                    {
...
                      insert_insn_on_edge (seq, e);
...


Ciao,
Michael.


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