1; RUN: opt < %s -analyze -branch-prob -enable-new-pm=0 | FileCheck %s 2; RUN: opt < %s -passes='print<branch-prob>' -disable-output 2>&1 | FileCheck %s 3 4; CHECK-LABEL: no_hoist 5; CHECK: edge entry -> if.end probability is 0x40000000 / 0x80000000 = 50.00% 6; CHECK: edge entry -> if.then probability is 0x40000000 / 0x80000000 = 50.00% 7; CHECK: edge if.end -> if.end4 probability is 0x40000000 / 0x80000000 = 50.00% 8; CHECK: edge if.end -> if.then3 probability is 0x40000000 / 0x80000000 = 50.00% 9define dso_local void @no_hoist(i64 %arg1, i64 %arg2) local_unnamed_addr #0 { 10entry: 11 %and = and i64 %arg1, 1152921504606846976 12 %tobool.not = icmp eq i64 %and, 0 13 br i1 %tobool.not, label %if.end, label %if.then 14 15if.then: ; preds = %entry 16 tail call void @bar() 17 br label %if.end 18 19if.end: ; preds = %if.then, %entry 20 %and1 = and i64 %arg2, 1152921504606846976 21 %tobool2.not = icmp eq i64 %and1, 0 22 br i1 %tobool2.not, label %if.end4, label %if.then3 23 24if.then3: ; preds = %if.end 25 tail call void @baz() 26 br label %if.end4 27 28if.end4: ; preds = %if.then3, %if.end 29 ret void 30} 31 32; CHECK-LABEL: hoist 33; CHECK: edge entry -> if.end probability is 0x40000000 / 0x80000000 = 50.00% 34; CHECK: edge entry -> if.then probability is 0x40000000 / 0x80000000 = 50.00% 35; CHECK: edge if.end -> if.end4 probability is 0x40000000 / 0x80000000 = 50.00% 36; CHECK: edge if.end -> if.then3 probability is 0x40000000 / 0x80000000 = 50.00% 37define dso_local void @hoist(i64 %arg1, i64 %arg2) local_unnamed_addr #0 { 38entry: 39 %const = bitcast i64 1152921504606846976 to i64 40 %and = and i64 %arg1, %const 41 %tobool.not = icmp eq i64 %and, 0 42 br i1 %tobool.not, label %if.end, label %if.then 43 44if.then: ; preds = %entry 45 tail call void @bar() 46 br label %if.end 47 48if.end: ; preds = %if.then, %entry 49 %and1 = and i64 %arg2, %const 50 %tobool2.not = icmp eq i64 %and1, 0 51 br i1 %tobool2.not, label %if.end4, label %if.then3 52 53if.then3: ; preds = %if.end 54 tail call void @baz() 55 br label %if.end4 56 57if.end4: ; preds = %if.then3, %if.end 58 ret void 59} 60 61declare dso_local void @bar() local_unnamed_addr #1 62 63declare dso_local void @baz() local_unnamed_addr #1 64