[PATCH] Global merge on constants

Renato Golin renato.golin at linaro.org
Tue Feb 26 17:43:19 PST 2013


Hi Quentin,

That's an interesting idea.

I wonder how that will interoperate with vectorization.

Cheers,
Renato
On 27 Feb 2013 01:36, "Quentin Colombet" <qcolombet at apple.com> wrote:

> Hi all,
>
> You will find enclosed a patch that adds the support of constant variables
> for the generic global merge pass.
> I've also attached a motivating example, test.c.
>
> In that file there are several global variables accessed within the same
> function.
> If all the variables are non-const, global merge generates one unique
> variable, which translates into one unique load in the assembly file.
>
> clang -arch arm -O3 test.c -o - -S
>
> If some are const (the example is very stupid), global merge does not
> merge anything and one load for each variable is issued, i.e., 3
> clang -arch arm -O3 test.c -o - -S -DWITHCONST
>
> If global merge had merged the constant globals, only 2 loads would have
> been issued. The patch allows to do that.
>
> Although the patch is fairly simple, it was not done before because it
> seems it was breaking the EH processing (see comment in the original code).
> Is it still true?
>
> If yes, how could I reproduce that?
>
> Note: that the patch disables by default the handling of global constants
> because the current heuristic may generate worse code. A tuning may be
> necessary, but it would be done as a second step
>
> -Quentin
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130227/603204e2/attachment.html>


More information about the llvm-commits mailing list