1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -basicaa -inline -instcombine -reassociate -dse -disable-output 2*9880d681SAndroid Build Coastguard Worker; PR12245 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker@a = common global i32 0, align 4 5*9880d681SAndroid Build Coastguard Worker@d = common global i32 0, align 4 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i32 @fn2() nounwind uwtable ssp { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* @a, align 4 10*9880d681SAndroid Build Coastguard Worker %dec = add nsw i32 %0, -1 11*9880d681SAndroid Build Coastguard Worker store i32 %dec, i32* @a, align 4 12*9880d681SAndroid Build Coastguard Worker %1 = load i32, i32* @d, align 4 13*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i32 %dec, %1 14*9880d681SAndroid Build Coastguard Worker store i32 %sub, i32* @d, align 4 15*9880d681SAndroid Build Coastguard Worker %2 = load i32, i32* @a, align 4 16*9880d681SAndroid Build Coastguard Worker %dec1 = add nsw i32 %2, -1 17*9880d681SAndroid Build Coastguard Worker store i32 %dec1, i32* @a, align 4 18*9880d681SAndroid Build Coastguard Worker %3 = load i32, i32* @d, align 4 19*9880d681SAndroid Build Coastguard Worker %sub2 = sub nsw i32 %dec1, %3 20*9880d681SAndroid Build Coastguard Worker store i32 %sub2, i32* @d, align 4 21*9880d681SAndroid Build Coastguard Worker %4 = load i32, i32* @a, align 4 22*9880d681SAndroid Build Coastguard Worker %dec3 = add nsw i32 %4, -1 23*9880d681SAndroid Build Coastguard Worker store i32 %dec3, i32* @a, align 4 24*9880d681SAndroid Build Coastguard Worker %5 = load i32, i32* @d, align 4 25*9880d681SAndroid Build Coastguard Worker %sub4 = sub nsw i32 %dec3, %5 26*9880d681SAndroid Build Coastguard Worker store i32 %sub4, i32* @d, align 4 27*9880d681SAndroid Build Coastguard Worker %6 = load i32, i32* @a, align 4 28*9880d681SAndroid Build Coastguard Worker %dec5 = add nsw i32 %6, -1 29*9880d681SAndroid Build Coastguard Worker store i32 %dec5, i32* @a, align 4 30*9880d681SAndroid Build Coastguard Worker %7 = load i32, i32* @d, align 4 31*9880d681SAndroid Build Coastguard Worker %sub6 = sub nsw i32 %dec5, %7 32*9880d681SAndroid Build Coastguard Worker store i32 %sub6, i32* @d, align 4 33*9880d681SAndroid Build Coastguard Worker %8 = load i32, i32* @a, align 4 34*9880d681SAndroid Build Coastguard Worker %dec7 = add nsw i32 %8, -1 35*9880d681SAndroid Build Coastguard Worker store i32 %dec7, i32* @a, align 4 36*9880d681SAndroid Build Coastguard Worker %9 = load i32, i32* @d, align 4 37*9880d681SAndroid Build Coastguard Worker %sub8 = sub nsw i32 %dec7, %9 38*9880d681SAndroid Build Coastguard Worker store i32 %sub8, i32* @d, align 4 39*9880d681SAndroid Build Coastguard Worker ret i32 0 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdefine i32 @fn1() nounwind uwtable ssp { 43*9880d681SAndroid Build Coastguard Workerentry: 44*9880d681SAndroid Build Coastguard Worker %call = call i32 @fn2() 45*9880d681SAndroid Build Coastguard Worker ret i32 %call 46*9880d681SAndroid Build Coastguard Worker} 47