; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 ; RUN: opt < %s -passes=newgvn -S | FileCheck %s ; CHECK-NOT: load ; CHECK-NOT: phi define ptr @cat(ptr %s1, i1 %arg, i1 %arg2, i1 %arg3, ...) nounwind { ; CHECK-LABEL: define ptr @cat( ; CHECK-SAME: ptr [[S1:%.*]], i1 [[ARG:%.*]], i1 [[ARG2:%.*]], i1 [[ARG3:%.*]], ...) #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: entry: ; CHECK-NEXT: br i1 [[ARG2]], label [[BB:%.*]], label [[BB3:%.*]] ; CHECK: bb: ; CHECK-NEXT: unreachable ; CHECK: bb3: ; CHECK-NEXT: store ptr undef, ptr undef, align 4 ; CHECK-NEXT: br i1 [[ARG3]], label [[BB5:%.*]], label [[BB6:%.*]] ; CHECK: bb5: ; CHECK-NEXT: unreachable ; CHECK: bb6: ; CHECK-NEXT: br label [[BB12:%.*]] ; CHECK: bb8: ; CHECK-NEXT: br i1 true, label [[BB9:%.*]], label [[BB10:%.*]] ; CHECK: bb9: ; CHECK-NEXT: br label [[BB11:%.*]] ; CHECK: bb10: ; CHECK-NEXT: store i8 poison, ptr null, align 1 ; CHECK-NEXT: br label [[BB11]] ; CHECK: bb11: ; CHECK-NEXT: br label [[BB12]] ; CHECK: bb12: ; CHECK-NEXT: br i1 [[ARG]], label [[BB8:%.*]], label [[BB13:%.*]] ; CHECK: bb13: ; CHECK-NEXT: ret ptr undef ; entry: br i1 %arg2, label %bb, label %bb3 bb: ; preds = %entry unreachable bb3: ; preds = %entry store ptr undef, ptr undef, align 4 br i1 %arg3, label %bb5, label %bb6 bb5: ; preds = %bb3 unreachable bb6: ; preds = %bb3 br label %bb12 bb8: ; preds = %bb12 br i1 %arg, label %bb9, label %bb10 bb9: ; preds = %bb8 %0 = load ptr, ptr undef, align 4 ; [#uses=0] %1 = load ptr, ptr undef, align 4 ; [#uses=0] br label %bb11 bb10: ; preds = %bb8 br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb12 bb12: ; preds = %bb11, %bb6 br i1 %arg, label %bb8, label %bb13 bb13: ; preds = %bb12 ret ptr undef }