[LLVMdev] Loop localize global variables (original) (raw)

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