[PATCH] reenable gep merging in some constrainted cases

Wei Mi wmi at google.com
Tue May 19 14:49:03 PDT 2015


Hi qcolombet, hfinkel,

In https://llvm.org/bugs/show_bug.cgi?id=23580, we saw a testcase for which loop vectorizer cannot generate wide load because it cannot recognize the load to be inter-interation consecutive without gep merging. That testcase showed the usage of gep merging in analysis besides basicaa.

To make the consecutive load analysis more effective, but still control the negative side effect of gep merging, the patch allows the source gep to be merged with the target gep if 1. the source gep only has one use and 2. both geps are in the same BB. This should cover the most common cases.

spec2000 and internal performance testing show no regression.

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D9865

Files:
  lib/Transforms/InstCombine/InstructionCombining.cpp
  test/Transforms/InstCombine/gep-merge1.ll
  test/Transforms/InstCombine/getelementptr.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D9865.26096.patch
Type: text/x-patch
Size: 10341 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150519/0348e155/attachment.bin>


More information about the llvm-commits mailing list