1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -disable-output 2*9880d681SAndroid Build Coastguard Worker; PR3144 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine fastcc i32 @func(i32 %length) nounwind { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker %0 = icmp ne i32 %length, -1 ; <i1> [#uses=1] 7*9880d681SAndroid Build Coastguard Worker %iftmp.13.0 = select i1 %0, i128 0, i128 200000000 ; <i128> [#uses=2] 8*9880d681SAndroid Build Coastguard Worker %1 = sdiv i128 %iftmp.13.0, 10 ; <i128> [#uses=1] 9*9880d681SAndroid Build Coastguard Worker br label %bb5 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %bb8, %entry 12*9880d681SAndroid Build Coastguard Worker %v.0 = phi i128 [ 0, %entry ], [ %6, %bb8 ] ; <i128> [#uses=2] 13*9880d681SAndroid Build Coastguard Worker %2 = icmp sgt i128 %v.0, %1 ; <i1> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker br i1 %2, label %overflow, label %bb7 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerbb7: ; preds = %bb5 17*9880d681SAndroid Build Coastguard Worker %3 = mul i128 %v.0, 10 ; <i128> [#uses=2] 18*9880d681SAndroid Build Coastguard Worker %4 = sub i128 %iftmp.13.0, 0 ; <i128> [#uses=1] 19*9880d681SAndroid Build Coastguard Worker %5 = icmp slt i128 %4, %3 ; <i1> [#uses=1] 20*9880d681SAndroid Build Coastguard Worker br i1 %5, label %overflow, label %bb8 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerbb8: ; preds = %bb7 23*9880d681SAndroid Build Coastguard Worker %6 = add i128 0, %3 ; <i128> [#uses=1] 24*9880d681SAndroid Build Coastguard Worker br label %bb5 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workeroverflow: ; preds = %bb7, %bb5 27*9880d681SAndroid Build Coastguard Worker ret i32 1 28*9880d681SAndroid Build Coastguard Worker} 29