[LLVMdev] Loop localize global variables

sundeepk at codeaurora.org sundeepk at codeaurora.org
Mon Jul 20 22:07:31 PDT 2015


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