Teach instcombine's sext elimination logic to be more aggressive.
authorChris Lattner <sabre@nondot.org>
Wed, 6 Jan 2010 01:56:21 +0000 (01:56 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 6 Jan 2010 01:56:21 +0000 (01:56 +0000)
commite0e4cc7fd57999633141d19cbfe6369d1b4b0a1a
treef1926be9411b0cc385b0ae9a0db0ad85ec3a45ab
parent8efadf94b568c08de3ff8ce35fd904a935387406
Teach instcombine's sext elimination logic to be more aggressive.
Previously, instcombine would only promote an expression tree to
the larger type if doing so eliminated two casts.  This is because
a need to manually do the sign extend after the promoted expression
tree with two shifts.  Now, we keep track of whether the result of
the computation is going to be properly sign extended already.  If
so, we can unconditionally promote the expression, which allows us
to zap more sext's.

This implements rdar://6598839 (aka gcc pr38751)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92815 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineCasts.cpp
test/Transforms/InstCombine/cast-sext-zext.ll [deleted file]
test/Transforms/InstCombine/cast.ll