summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/builtins/int_util.c
diff options
context:
space:
mode:
authorAlexei Starovoitov <alexei.starovoitov@gmail.com>2015-10-06 04:00:53 +0000
committerAlexei Starovoitov <alexei.starovoitov@gmail.com>2015-10-06 04:00:53 +0000
commit4e01a38da08cb2eb1556fe52614f4dd926d4f555 (patch)
treecc449c134a8afa86e8ac2f0fe46057ff1928c190 /compiler-rt/lib/builtins/int_util.c
parent79dd1bf09441fc62e959c08d7146d94b282691ba (diff)
downloadbcm5719-llvm-4e01a38da08cb2eb1556fe52614f4dd926d4f555.tar.gz
bcm5719-llvm-4e01a38da08cb2eb1556fe52614f4dd926d4f555.zip
[bpf] Avoid extra pointer arithmetic for stack access
For the program like below struct key_t { int pid; char name[16]; }; extern void test1(char *); int test() { struct key_t key = {}; test1(key.name); return 0; } For key.name, the llc/bpf may generate the below code: R1 = R10 // R10 is the frame pointer R1 += -24 // framepointer adjustment R1 |= 4 // R1 is then used as the first parameter of test1 OR operation is not recognized by in-kernel verifier. This patch introduces an intermediate FI_ri instruction and generates the following code that can be properly verified: R1 = R10 R1 += -20 Patch by Yonghong Song <yhs@plumgrid.com> llvm-svn: 249371
Diffstat (limited to 'compiler-rt/lib/builtins/int_util.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud