; 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 }