summaryrefslogtreecommitdiffstats
path: root/lldb/include/lldb/Symbol/SymbolVendor.h
diff options
context:
space:
mode:
authorLawrence Hu <lawrence@codeaurora.org>2015-09-23 19:25:30 +0000
committerLawrence Hu <lawrence@codeaurora.org>2015-09-23 19:25:30 +0000
commitcac0b89289c370a24101c657b1345cc0ed57ee9d (patch)
tree2528604d6c05d1c98c7190f54c759332b1de9028 /lldb/include/lldb/Symbol/SymbolVendor.h
parentf6afd11538981c709ba155f0d6220f487e42e3ae (diff)
downloadbcm5719-llvm-cac0b89289c370a24101c657b1345cc0ed57ee9d.tar.gz
bcm5719-llvm-cac0b89289c370a24101c657b1345cc0ed57ee9d.zip
Swap loop invariant GEP with loop variant GEP to allow more LICM.
This patch changes the order of GEPs generated by Splitting GEPs pass, specially when one of the GEPs has constant and the base is loop invariant, then we will generate the GEP with constant first when beneficial, to expose more cases for LICM. If originally Splitting GEP generate the following: do.body.i: %idxprom.i = sext i32 %shr.i to i64 %2 = bitcast %typeD* %s to i8* %3 = shl i64 %idxprom.i, 2 %uglygep = getelementptr i8, i8* %2, i64 %3 %uglygep7 = getelementptr i8, i8* %uglygep, i64 1032 ... Now it genereates: do.body.i: %idxprom.i = sext i32 %shr.i to i64 %2 = bitcast %typeD* %s to i8* %3 = shl i64 %idxprom.i, 2 %uglygep = getelementptr i8, i8* %2, i64 1032 %uglygep7 = getelementptr i8, i8* %uglygep, i64 %3 ... For no-loop cases, the original way of generating GEPs seems to expose more CSE cases, so we don't change the logic for no-loop cases, and only limit our change to the specific case we are interested in. llvm-svn: 248420
Diffstat (limited to 'lldb/include/lldb/Symbol/SymbolVendor.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud