| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt < %s -passes=gvn -S | FileCheck %s |
| |
| ; PR12858 |
| |
| define void @fn5(i16 signext %p1, i8 signext %p2, i1 %arg) nounwind uwtable { |
| ; CHECK-LABEL: define void @fn5( |
| ; CHECK-SAME: i16 signext [[P1:%.*]], i8 signext [[P2:%.*]], i1 [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { |
| ; CHECK-NEXT: [[ENTRY:.*:]] |
| ; CHECK-NEXT: br i1 [[ARG]], label %[[IF_ELSE:.*]], label %[[IF_THEN:.*]] |
| ; CHECK: [[IF_THEN]]: |
| ; CHECK-NEXT: [[DOTPRE:%.*]] = sext i16 [[P1]] to i32 |
| ; CHECK-NEXT: br label %[[IF_END:.*]] |
| ; CHECK: [[IF_ELSE]]: |
| ; CHECK-NEXT: [[CONV:%.*]] = sext i16 [[P1]] to i32 |
| ; CHECK-NEXT: br label %[[IF_END]] |
| ; CHECK: [[IF_END]]: |
| ; CHECK-NEXT: [[CONV1_PRE_PHI:%.*]] = phi i32 [ [[CONV]], %[[IF_ELSE]] ], [ [[DOTPRE]], %[[IF_THEN]] ] |
| ; CHECK-NEXT: br i1 [[ARG]], label %[[IF_THEN3:.*]], label %[[IF_ELSE4:.*]] |
| ; CHECK: [[IF_THEN3]]: |
| ; CHECK-NEXT: [[DOTPRE1:%.*]] = sext i8 [[P2]] to i32 |
| ; CHECK-NEXT: br label %[[IF_END12:.*]] |
| ; CHECK: [[IF_ELSE4]]: |
| ; CHECK-NEXT: [[CONV7:%.*]] = sext i8 [[P2]] to i32 |
| ; CHECK-NEXT: [[CMP8:%.*]] = icmp eq i32 [[CONV1_PRE_PHI]], [[CONV7]] |
| ; CHECK-NEXT: br i1 [[CMP8]], label %[[IF_THEN10:.*]], label %[[IF_END12]] |
| ; CHECK: [[IF_THEN10]]: |
| ; CHECK-NEXT: br label %[[IF_END12]] |
| ; CHECK: [[IF_END12]]: |
| ; CHECK-NEXT: [[CONV13_PRE_PHI:%.*]] = phi i32 [ [[CONV7]], %[[IF_THEN10]] ], [ [[CONV7]], %[[IF_ELSE4]] ], [ [[DOTPRE1]], %[[IF_THEN3]] ] |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| br i1 %arg, label %if.else, label %if.then |
| |
| if.then: ; preds = %entry |
| br label %if.end |
| |
| if.else: ; preds = %entry |
| %conv = sext i16 %p1 to i32 |
| br label %if.end |
| |
| if.end: ; preds = %if.else, %if.then |
| %conv1 = sext i16 %p1 to i32 |
| br i1 %arg, label %if.then3, label %if.else4 |
| |
| if.then3: ; preds = %if.end |
| br label %if.end12 |
| |
| if.else4: ; preds = %if.end |
| %conv7 = sext i8 %p2 to i32 |
| %cmp8 = icmp eq i32 %conv1, %conv7 |
| br i1 %cmp8, label %if.then10, label %if.end12 |
| |
| if.then10: ; preds = %if.else4 |
| br label %if.end12 |
| |
| if.end12: ; preds = %if.then10, %if.else4, %if.then3 |
| %conv13 = sext i8 %p2 to i32 |
| ret void |
| } |