This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] add optional split pass before CSE2
- From: Steven Bosscher <stevenb dot gcc at gmail dot com>
- To: Trevor_Smigiel at playstation dot sony dot com, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 4 May 2009 23:26:51 +0200
- Subject: Re: [PATCH] add optional split pass before CSE2
> On SPU we can get better code generation for loads and stores when we
> add an extra split pass just before cse2. It is better because we can
> provide the earlier RTL passes a simplified RTL description and then
> split it to something closer to actual machine instructions to be
> improved by later RTL passes (especially cse2 and combine). For loads
> and stores on SPU it means the early passes have correct alias
> information and later passes are able to merge common loads and stores.
> This can potentially help any target that has complicated operations
This explanation doesn't help me, at least, understand why this new
split pass is necessary. Questions I'm left with:
(1) What is it that makes it impossible to split up everything when
expanding to RTL?
(2) Why can't (or aren't) the higher-level optimization handled on GIMPLE?
(3) What does "correct alias information" mean and why is it
"incorrect" if you split earlier?
(4) What other solutions have you considered?
(5) Have you looked if the alias-export infrastructure would be a
solution for you?
This idea of splitting before CSE2 is another step away from proper
instruction selection in GCC. It is a really big step in the wrong