| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -passes=gvn -S < %s | FileCheck %s |
| |
| ; Make sure that performing PRE does not add prof metadata onto newly created |
| ; phi nodes. |
| define fastcc ptr @foo(i8 %__pred.1.val) { |
| ; CHECK-LABEL: define fastcc ptr @foo( |
| ; CHECK-SAME: i8 [[__PRED_1_VAL:%.*]]) { |
| ; CHECK-NEXT: [[ENTRY:.*:]] |
| ; CHECK-NEXT: switch i64 0, label %[[SW_BB:.*]] [ |
| ; CHECK-NEXT: i64 1, label %[[ENTRY_SW_BB26_CRIT_EDGE:.*]] |
| ; CHECK-NEXT: i64 0, label %[[ENTRY_SW_BB21_CRIT_EDGE:.*]] |
| ; CHECK-NEXT: ] |
| ; CHECK: [[ENTRY_SW_BB21_CRIT_EDGE]]: |
| ; CHECK-NEXT: [[DOTPRE:%.*]] = trunc i8 [[__PRED_1_VAL]] to i1 |
| ; CHECK-NEXT: [[DOTPRE1:%.*]] = select i1 [[DOTPRE]], i64 0, i64 4 |
| ; CHECK-NEXT: br label %[[SW_BB21:.*]] |
| ; CHECK: [[ENTRY_SW_BB26_CRIT_EDGE]]: |
| ; CHECK-NEXT: [[DOTPRE2:%.*]] = trunc i8 [[__PRED_1_VAL]] to i1 |
| ; CHECK-NEXT: [[DOTPRE3:%.*]] = select i1 [[DOTPRE2]], i64 0, i64 4, !prof [[PROF0:![0-9]+]] |
| ; CHECK-NEXT: br label %[[SW_BB26:.*]] |
| ; CHECK: [[SW_BB]]: |
| ; CHECK-NEXT: [[L78:%.*]] = trunc i8 [[__PRED_1_VAL]] to i1 |
| ; CHECK-NEXT: [[C79:%.*]] = select i1 [[L78]], i64 0, i64 4 |
| ; CHECK-NEXT: br label %[[SW_BB21]] |
| ; CHECK: [[SW_BB21]]: |
| ; CHECK-NEXT: [[C84_PRE_PHI:%.*]] = phi i64 [ [[DOTPRE1]], %[[ENTRY_SW_BB21_CRIT_EDGE]] ], [ [[C79]], %[[SW_BB]] ] |
| ; CHECK-NEXT: [[L83_PRE_PHI:%.*]] = phi i1 [ [[DOTPRE]], %[[ENTRY_SW_BB21_CRIT_EDGE]] ], [ [[L78]], %[[SW_BB]] ] |
| ; CHECK-NEXT: br label %[[SW_BB26]] |
| ; CHECK: [[SW_BB26]]: |
| ; CHECK-NEXT: [[C89_PRE_PHI:%.*]] = phi i64 [ [[DOTPRE3]], %[[ENTRY_SW_BB26_CRIT_EDGE]] ], [ [[C84_PRE_PHI]], %[[SW_BB21]] ] |
| ; CHECK-NEXT: [[L88_PRE_PHI:%.*]] = phi i1 [ [[DOTPRE2]], %[[ENTRY_SW_BB26_CRIT_EDGE]] ], [ [[L83_PRE_PHI]], %[[SW_BB21]] ] |
| ; CHECK-NEXT: ret ptr null |
| ; |
| entry: |
| switch i64 0, label %sw.bb [ |
| i64 1, label %sw.bb26 |
| i64 0, label %sw.bb21 |
| ] |
| |
| sw.bb: ; preds = %entry |
| %l78 = trunc i8 %__pred.1.val to i1 |
| %c79 = select i1 %l78, i64 0, i64 4 |
| br label %sw.bb21 |
| |
| sw.bb21: ; preds = %sw.bb, %entry |
| %l83 = trunc i8 %__pred.1.val to i1 |
| %c84 = select i1 %l83, i64 0, i64 4 |
| br label %sw.bb26 |
| |
| sw.bb26: ; preds = %sw.bb21, %entry |
| %l88 = trunc i8 %__pred.1.val to i1 |
| %c89 = select i1 %l88, i64 0, i64 4, !prof !0 |
| ret ptr null |
| } |
| |
| !0 = !{!"branch_weights", i32 3994, i32 883} |
| ;. |
| ; CHECK: [[PROF0]] = !{!"branch_weights", i32 3994, i32 883} |
| ;. |