| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 | |
| ; RUN: opt < %s -passes=jump-threading -S | FileCheck %s | |
| define i32 @four_out_of_fifteen(i1 %call15, i1 %call16) !prof !0 { | |
| ; CHECK-LABEL: define i32 @four_out_of_fifteen( | |
| ; CHECK-SAME: i1 [[CALL15:%.*]], i1 [[CALL16:%.*]]) !prof [[PROF0:![0-9]+]] { | |
| ; CHECK-NEXT: [[ENTRY:.*]]: | |
| ; CHECK-NEXT: br i1 [[CALL15]], label %[[LOR_END_THREAD:.*]], label %[[LOR_END:.*]] | |
| ; CHECK: [[LOR_END]]: | |
| ; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[CALL16]] | |
| ; CHECK-NEXT: br i1 [[COND_FR]], label %[[LOR_END_THREAD]], label %[[LOR_END_THREAD]], !prof [[PROF1:![0-9]+]] | |
| ; CHECK: [[LOR_END_THREAD]]: | |
| ; CHECK-NEXT: [[TMP0:%.*]] = phi i32 [ 0, %[[LOR_END]] ], [ 0, %[[LOR_END]] ], [ 0, %[[ENTRY]] ] | |
| ; CHECK-NEXT: ret i32 [[TMP0]] | |
| ; | |
| entry: | |
| br i1 %call15, label %lor.end, label %lor.rhs | |
| lor.rhs: | |
| br label %lor.end | |
| lor.end: | |
| %0 = phi i1 [ false, %entry ], [ %call16, %lor.rhs ] | |
| %bf.shl10.i = select i1 %0, i32 0, i32 0, !prof !1 | |
| ret i32 %bf.shl10.i | |
| } | |
| !0 = !{!"function_entry_count", i32 100} | |
| !1 = !{!"unknown", !"instcombine"} | |
| ;. | |
| ; CHECK: [[PROF0]] = !{!"function_entry_count", i32 100} | |
| ; CHECK: [[PROF1]] = !{!"unknown", !"jump-threading"} | |
| ;. |