This is the mail archive of the 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: [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
direction IMNSHO.


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