31 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 42; RUN: opt -passes=newgvn -S < %s | FileCheck %s3 4; Check that an unreachable predecessor to a PHI node doesn't cause a crash.5; PR21625.6 7define i32 @f(ptr %f) {8; CHECK-LABEL: define i32 @f(9; CHECK-SAME: ptr [[F:%.*]]) {10; CHECK-NEXT: bb0:11; CHECK-NEXT: br label [[BB2:%.*]]12; CHECK: bb1:13; CHECK-NEXT: store i8 poison, ptr null, align 114; CHECK-NEXT: br i1 false, label [[BB1:%.*]], label [[BB2]]15; CHECK: bb2:16; CHECK-NEXT: [[STOREMERGE:%.*]] = load i32, ptr null, align 417; CHECK-NEXT: ret i32 [[STOREMERGE]]18;19; Load should be removed, since it's ignored.20bb0:21 %bar = load ptr, ptr %f22 br label %bb223bb1:24 %zed = load ptr, ptr %f25 br i1 false, label %bb1, label %bb226bb2:27 %foo = phi ptr [ null, %bb0 ], [ %zed, %bb1 ]28 %storemerge = load i32, ptr %foo29 ret i32 %storemerge30}31