InstCombine: Stop two transforms dueling
[oota-llvm.git] / test / Transforms / InstCombine / pr20079.ll
1 ; RUN: opt -S -instcombine < %s | FileCheck %s
2 @b = internal global [1 x i32] zeroinitializer, align 4
3 @c = internal global i32 0, align 4
4
5 ; CHECK-LABEL: @fn1
6 ; CHECK: [[ADD:%.*]] = add i32 %a, -1
7 ; CHECK-NEXT: [[AND:%.*]] = and i32 [[ADD]], sub (i32 0, i32 zext (i1 icmp eq (i32* getelementptr inbounds ([1 x i32]* @b, i64 0, i64 0), i32* @c) to i32))
8 ; CHECK-NEXT: ret i32 [[AND]]
9 define i32 @fn1(i32 %a) {
10   %xor = add i32 %a, -1
11   %mul = mul nsw i32 %xor, zext (i1 icmp eq (i32* getelementptr inbounds ([1 x i32]* @b, i64 0, i64 0), i32* @c) to i32)
12   ret i32 %mul
13 }