aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2010-12-21 20:06:19 +0000
committerDale Johannesen <dalej@apple.com>2010-12-21 20:06:19 +0000
commit5ecc340e34e6ca4b9f6ebde6c1379cb3b8084f69 (patch)
tree38c30ce8b5ef25045ec848be5d11df12aa0ea26a
parentefc96dd38c285c1a01aa6f613f533d1205e4acb2 (diff)
Get the type of a shift from the shift, not from its shift
count operand. These should be the same but apparently are not always, and this is cleaner anyway. This improves the code in an existing test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122354 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/SelectionDAG/DAGCombiner.cpp2
-rw-r--r--test/CodeGen/X86/divide-by-constant.ll6
2 files changed, 4 insertions, 4 deletions
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index c58dede823..cd26e647b4 100644
--- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -3178,7 +3178,7 @@ SDValue DAGCombiner::visitSRL(SDNode *N) {
uint64_t c1 =
cast<ConstantSDNode>(N0.getOperand(0)->getOperand(1))->getZExtValue();
uint64_t c2 = N1C->getZExtValue();
- EVT InnerShiftVT = N0.getOperand(0)->getOperand(1).getValueType();
+ EVT InnerShiftVT = N0.getOperand(0).getValueType();
uint64_t InnerShiftSize = InnerShiftVT.getScalarType().getSizeInBits();
// This is only valid if the OpSizeInBits + c1 = size of inner shift.
if (c1 + OpSizeInBits == InnerShiftSize) {
diff --git a/test/CodeGen/X86/divide-by-constant.ll b/test/CodeGen/X86/divide-by-constant.ll
index ab3bd94149..545662fd0f 100644
--- a/test/CodeGen/X86/divide-by-constant.ll
+++ b/test/CodeGen/X86/divide-by-constant.ll
@@ -29,9 +29,9 @@ entry:
ret i8 %div
; CHECK: test3:
-; CHECK: imull $171, %eax, %eax
-; CHECK-NEXT: shrb %ah
-; CHECK-NEXT: movzbl %ah, %eax
+; CHECK: movzbl 8(%esp), %eax
+; CHECK-NEXT: imull $171, %eax, %eax
+; CHECK-NEXT: shrl $9, %eax
; CHECK-NEXT: ret
}