]> granicus.if.org Git - llvm/commit
Limiting gep merging to fix the performance problem described in
authorWei Mi <wmi@google.com>
Tue, 21 Apr 2015 23:02:15 +0000 (23:02 +0000)
committerWei Mi <wmi@google.com>
Tue, 21 Apr 2015 23:02:15 +0000 (23:02 +0000)
commitef67950b62445e3a7d1ed7afaacf594eaade8193
tree9fd4e3e3638df340fa981b517022e26b90ccc827
parent480fc70c4333e1655e9fe137e72ba8a8229316b8
Limiting gep merging to fix the performance problem described in
https://llvm.org/bugs/show_bug.cgi?id=23163.

Gep merging sometimes behaves like a reverse CSE/LICM optimization,
which has negative impact on performance. In this patch we restrict
gep merging to happen only when the indexes to be merged are both consts,
which ensures such merge is always beneficial.

The patch makes gep merging only happen in very restrictive cases.
It is possible that some analysis/optimization passes rely on the merged
geps to get better result, and we havn't notice them yet. We will be ready
to further improve it once we see the cases.

Differential Revision: http://reviews.llvm.org/D8911

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235455 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstructionCombining.cpp
test/Transforms/InstCombine/descale-zero.ll
test/Transforms/InstCombine/getelementptr.ll