[LLVMdev] Loop localize global variables

sundeepk at codeaurora.org sundeepk at codeaurora.org
Mon Jul 20 22:10:33 PDT 2015


typo corrected

  lcl_var = gbl_var;
  for () {
     ...access lcl_var...
  }
  gbl_var = lcl_var;


> Hello all,
>
> I am writing to get some feedback on an optimization that I would like to
> upstream. The basic idea is to localize global variables inside loops so
> that it can be allocated into registers. For example, transform the
> following sequence
>
> static int gbl_var;
> void foo() {
>
>   for () {
>      ...access gbl_var...
>   }
>
> }
>
> into something like
>
> static int gbl_var;
> void foo() {
>   int lcl_var;
>
>   lcl_var = gbl_var;
>   for () {
>      ...access clc_var...
>   }
>   gbl_var = lcl_var;
>
> }
>
> This transformation helps a couple of EEMBC benchmarks on both Aarch64 and
> Hexagon backends. I was wondering if there is interest to get this
> optimization upstreamed or if there is a better way of doing this.
>
> Thanks,
> Sundeep
>
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
>





More information about the llvm-dev mailing list