This is the mail archive of the
mailing list for the GCC project.
Re: Question about cfgrtl.c:flow_delete_block_noexpunge
- From: Richard Henderson <rth at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 10 Jun 2003 18:14:55 -0700
- Subject: Re: Question about cfgrtl.c:flow_delete_block_noexpunge
- References: <10306102259.AA24997@vlsi1.ultra.nyu.edu>
On Tue, Jun 10, 2003 at 06:59:01PM -0400, Richard Kenner wrote:
> Why is the jump table right after the basic block? Isn't it in a basic
> block of its own?
No, it's between blocks. It's not a basic block of its own because
it's not code that you can execute on its own. Indeed, on some
platforms (vax, m68k) you cannot even separate it from the tablejump insn.
> I see this failing in GCC 3.2 in a very large Ada testcase where what
> happens is that CSE converts a tablejump into an unconditional jump.
> It leaves the tablejump for later passes to clean up and that's when
> this blows up.
There have been several fixes for this in 3.3 and mainline since 3.2.
We had to iterate several times to prevent the air bubble from popping
up somewhere else. So there's no simple answer to give you; search
the archives from late April, early May and you should find some info
on this topic.