llvm-6502/lib/Transforms
Jingyue Wu 1d56cda023 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213209 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-16 23:25:00 +00:00
..
Hello [CMake] Add LLVM_LINK_COMPONENTS to loadable modules, LLVMHello and BugpointPasses, on Win32. 2014-07-13 13:36:48 +00:00
InstCombine Utilize CastInst::CreatePointerBitCastOrAddrSpaceCast here. 2014-07-16 20:13:45 +00:00
Instrumentation [dfsan] Introduce further optimization to reduce the number of union queries. 2014-07-15 22:13:19 +00:00
IPO MergeFunc patch from Björn Steinbrink. 2014-07-15 10:46:51 +00:00
ObjCARC Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
Scalar Partially revert r210444 due to performance regression 2014-07-16 23:25:00 +00:00
Utils Give SplitBlockAndInsertIfThen the ability to update a domtree. 2014-07-15 04:40:27 +00:00
Vectorize Emit warnings if vectorization is forced and fails. 2014-07-16 00:36:00 +00:00
CMakeLists.txt Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
LLVMBuild.txt Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
Makefile Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00