This is the mail archive of the
mailing list for the GCC project.
Re: [Bug tree-optimization/15524] [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases
- From: Diego Novillo <dnovillo at redhat dot com>
- To: law at redhat dot com <gcc-bugzilla at gcc dot gnu dot org>
- Cc: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 13 Apr 2005 09:03:23 -0400
- Subject: Re: [Bug tree-optimization/15524] [4.0 Regression] jump threading on trees is slow with switch statements with large # of cases
- Organization: Red Hat Canada
- References: <email@example.com> <firstname.lastname@example.org>
On Tue, Apr 12, 2005 at 04:55:20PM -0000, law at redhat dot com wrote:
> That mental model doesn't work right now with the way DOM & the
> jump threader because they are too tightly intertwined.
The link that you have still not shown me is why doesn't this
mental model work for the jump threader. That's why I said that
I need to run the threader myself and see why it needs all these
If the code has been cleaned up of redundancies, copies
propagated, names have known values and ranges are set, then I
don't see why we would need all the extra baggage.
> The iteration step we see today would turn into a worklist.
> ie, after we thread jumps, we walk through the IL for PHIs
> which represent a copy that can be propagated.
Ah, here's something specific I don't follow. Why would you have
these PHIs anymore? If all the arguments were ultimately
equivalent, then the various propagators are bound to have
removed them. If not, that sounds like a bug in them.
> What's nice about this is the bulk of DOM as we know it today
> disappears along with the expensive iteration in the case when
> jumps are threaded. We just need the right APIs for copy
> propagation and value handles.
Again, why? The propagators are supposed to have done this
already. They are all supposed to work in conditional regions.
> We could still potentially use ASSERT_EXPRs to encode
> information about edge equivalences, though we probably would
> still want the ASSERT_EXPR to appear as statement rather than
> the RHS of a MODIFY_EXPR.
Odd, the nice thing about assertions being on the RHS is that you
pin their result to a specific SSA name that you then get to use
at every place naturally dominated by the assertion.
If you could give me a concrete test case that I could sink my
teeth in, that'd be great.