Use the fact that add nuw always creates a larger bit pattern when
trying to simplify comparisons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245638
91177308-0d34-0410-b5e6-
96231b3b80d8
} else if (match(LHS, m_And(m_Value(), m_ConstantInt(CI2)))) {
// 'and x, CI2' produces [0, CI2].
Upper = CI2->getValue() + 1;
} else if (match(LHS, m_And(m_Value(), m_ConstantInt(CI2)))) {
// 'and x, CI2' produces [0, CI2].
Upper = CI2->getValue() + 1;
+ } else if (match(LHS, m_NUWAdd(m_Value(), m_ConstantInt(CI2)))) {
+ // 'add nuw x, CI2' produces [CI2, UINT_MAX].
+ Lower = CI2->getValue();
}
if (Lower != Upper) {
ConstantRange LHS_CR = ConstantRange(Lower, Upper);
}
if (Lower != Upper) {
ConstantRange LHS_CR = ConstantRange(Lower, Upper);
; CHECK-LABEL: @tautological8(
; CHECK: ret i1 false
}
; CHECK-LABEL: @tautological8(
; CHECK: ret i1 false
}
+
+define i1 @tautological9(i32 %x) {
+ %add = add nuw i32 %x, 13
+ %cmp = icmp ne i32 %add, 12
+ ret i1 %cmp
+; CHECK-LABEL: @tautological9(
+; CHECK: ret i1 true
+}