aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-03-28 23:41:33 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-03-28 23:41:33 +0000
commit36b27f3cdef57c5b483428f98ddaf6b9aa8ef3f6 (patch)
tree02137fd07a1d02959fedd1bf8ecb88aedf83c7d0
parentf065a6f711dca09ba36ec8fd3556c4936cdbe621 (diff)
Fixing buggy code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27239 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index 2c067b10bd..303b808a8d 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -1571,14 +1571,14 @@ unsigned X86::getShuffleSHUFImmediate(SDNode *N) {
unsigned NumOperands = N->getNumOperands();
unsigned Shift = (NumOperands == 4) ? 2 : 1;
unsigned Mask = 0;
- unsigned i = NumOperands - 1;
- do {
- unsigned Val = cast<ConstantSDNode>(N->getOperand(i))->getValue();
+ for (unsigned i = 0; i < NumOperands; ++i) {
+ unsigned Val
+ = cast<ConstantSDNode>(N->getOperand(NumOperands-i-1))->getValue();
if (Val >= NumOperands) Val -= NumOperands;
Mask |= Val;
- Mask <<= Shift;
- --i;
- } while (i != 0);
+ if (i != NumOperands - 1)
+ Mask <<= Shift;
+ }
return Mask;
}