1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -jump-threading -dce < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 3*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind uwtable 6*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i32 %a, i32 %b) #0 { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %a, 5 9*9880d681SAndroid Build Coastguard Worker tail call void @llvm.assume(i1 %cmp) 10*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp sgt i32 %b, 1234 11*9880d681SAndroid Build Coastguard Worker br i1 %cmp1, label %if.then, label %if.else 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test1 14*9880d681SAndroid Build Coastguard Worker; CHECK: icmp sgt i32 %a, 5 15*9880d681SAndroid Build Coastguard Worker; CHECK: call void @llvm.assume 16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: icmp sgt i32 %a, 3 17*9880d681SAndroid Build Coastguard Worker; CHECK: ret i32 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 20*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp sgt i32 %a, 3 21*9880d681SAndroid Build Coastguard Worker br i1 %cmp2, label %if.then3, label %return 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerif.then3: ; preds = %if.then 24*9880d681SAndroid Build Coastguard Worker tail call void (...) @bar() #1 25*9880d681SAndroid Build Coastguard Worker br label %return 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerif.else: ; preds = %entry 28*9880d681SAndroid Build Coastguard Worker tail call void (...) @car() #1 29*9880d681SAndroid Build Coastguard Worker br label %return 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %if.else, %if.then, %if.then3 32*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ 1, %if.then3 ], [ 0, %if.then ], [ 0, %if.else ] 33*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i32 %a) #0 { 37*9880d681SAndroid Build Coastguard Workerentry: 38*9880d681SAndroid Build Coastguard Worker %cmp = icmp sgt i32 %a, 5 39*9880d681SAndroid Build Coastguard Worker tail call void @llvm.assume(i1 %cmp) 40*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp sgt i32 %a, 3 41*9880d681SAndroid Build Coastguard Worker br i1 %cmp1, label %if.then, label %return 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test2 44*9880d681SAndroid Build Coastguard Worker; CHECK: icmp sgt i32 %a, 5 45*9880d681SAndroid Build Coastguard Worker; CHECK: tail call void @llvm.assume 46*9880d681SAndroid Build Coastguard Worker; CHECK: tail call void (...) @bar() 47*9880d681SAndroid Build Coastguard Worker; CHECK: ret i32 1 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 51*9880d681SAndroid Build Coastguard Worker tail call void (...) @bar() #1 52*9880d681SAndroid Build Coastguard Worker br label %return 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %entry, %if.then 55*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ 1, %if.then ], [ 0, %entry ] 56*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 60*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.assume(i1) #1 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdeclare void @bar(...) 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdeclare void @car(...) 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind uwtable } 67*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind } 68*9880d681SAndroid Build Coastguard Worker 69