diff options
| author | Jingyue Wu <jingyue@google.com> | 2014-07-16 23:25:00 +0000 |
|---|---|---|
| committer | Jingyue Wu <jingyue@google.com> | 2014-07-16 23:25:00 +0000 |
| commit | 0bdc027e3161c8ab557d4cd19c3b463aef8ed196 (patch) | |
| tree | 3361755ec91281a5f007bfc6da9cdba08a31612c /clang/lib/CodeGen/CodeGenModule.cpp | |
| parent | 3e49fda0d4f2de4c22a4cedfd9c2d2e5b0589f9c (diff) | |
| download | bcm5719-llvm-0bdc027e3161c8ab557d4cd19c3b463aef8ed196.tar.gz bcm5719-llvm-0bdc027e3161c8ab557d4cd19c3b463aef8ed196.zip | |
Partially revert r210444 due to performance regression
Summary:
Converting outermost zext(a) to sext(a) causes worse code when the
computation of zext(a) could be reused. For example, after converting
... = array[zext(a)]
... = array[zext(a) + 1]
to
... = array[sext(a)]
... = array[zext(a) + 1],
the program computes sext(a), which is actually unnecessary. I added one
test in split-gep-and-gvn.ll to illustrate this scenario.
Also, with r211281 and r211084, we annotate more "nuw" tags to
computation involving CUDA intrinsics such as threadIdx.x. These
annotations help with splitting GEP a lot, rendering the benefit we get
from this reverted optimization only marginal.
Test Plan: make check-all
Reviewers: eliben, meheff
Reviewed By: meheff
Subscribers: jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D4542
llvm-svn: 213209
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions

