Fix PR4254.
authorTorok Edwin <edwintorok@gmail.com>
Sat, 23 May 2009 17:29:48 +0000 (17:29 +0000)
committerTorok Edwin <edwintorok@gmail.com>
Sat, 23 May 2009 17:29:48 +0000 (17:29 +0000)
commit6bb4958543e2b7ff412b3dac3ebf01a184193ad7
tree8bffda5d5211572322ad8c2a363f01f52bac765b
parent1f04462c22a2b0fc0bb1fc7d33b39418308fb868
Fix PR4254.
The DAGCombiner created a negative shiftamount, stored in an
unsigned variable. Later the optimizer eliminated the shift entirely as being
undefined.
Example: (srl (shl X, 56) 48). ShiftAmt is 4294967288.
Fix it by checking that the shiftamount is positive, and storing in a signed
variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72331 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/2009-05-23-dagcombine-shifts.ll [new file with mode: 0644]