diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp index 3c4589ab18f..8f24f98be68 100644 --- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -1055,7 +1055,10 @@ static bool foldMaskAndShiftToScale(SelectionDAG &DAG, SDValue N,    // Scale the leading zero count down based on the actual size of the value.    // Also scale it down based on the size of the shift. -  MaskLZ -= (64 - X.getSimpleValueType().getSizeInBits()) + ShiftAmt; +  unsigned ScaleDown = (64 - X.getSimpleValueType().getSizeInBits()) + ShiftAmt; +  if (MaskLZ < ScaleDown) +    return true; +  MaskLZ -= ScaleDown;    // The final check is to ensure that any masked out high bits of X are    // already known to be zero. Otherwise, the mask has a semantic impact | 

