66 lines · plain
1; RUN: opt < %s -passes='require<loops>,gvn' -S | FileCheck %s2; This test is checking that (a) this doesn't crash, and (b) we don't3; conclude the value of %tmp17 is available in bb1.bb15_crit_edge.4; rdar://94298825 6target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"7define i1 @rb_intern(ptr %foo) nounwind ssp {8; CHECK-LABEL: @rb_intern(9 10bb:11 %tmp = alloca ptr, align 812 store ptr null, ptr %tmp, align 813 store i8 undef, ptr null, align 53687091214 br label %bb115 16bb1:17 br i1 undef, label %bb3, label %bb1518 19; CHECK: bb1:20; CHECK: [[TMP:%.*]] = phi ptr [ %tmp14, %bb10 ], [ null, %bb ]21 22; CHECK: bb1.bb15_crit_edge:23; CHECK: %tmp17.pre = load i8, ptr [[TMP]], align 124 25bb3:26 call void @isalnum()27 br i1 undef, label %bb10, label %bb528 29bb5:30 br i1 undef, label %bb10, label %bb631 32bb6:33 %tmp7 = load ptr, ptr %tmp, align 834 %tmp8 = load i8, ptr %tmp7, align 135 %tmp9 = zext i8 %tmp8 to i6436 br i1 undef, label %bb15, label %bb1037 38bb10:39 %tmp11 = load ptr, ptr %tmp, align 840 %tmp12 = load i8, ptr %tmp11, align 141 %tmp13 = zext i8 %tmp12 to i6442 %tmp14 = getelementptr inbounds i8, ptr %foo, i64 undef43 store ptr %tmp14, ptr %tmp, align 844 br label %bb145 46bb15:47 %tmp16 = load ptr, ptr %tmp, align 848 %tmp17 = load i8, ptr %tmp16, align 149 %tmp18 = icmp eq i8 %tmp17, 050 br label %bb1951 52; CHECK-LABEL: bb6:53; CHECK: br i1 undef, label %bb15split, label %bb1054 55; CHECK-LABEL: bb15split: ; preds = %bb656; CHECK-NEXT: br label %bb1557 58; CHECK-LABEL: bb15:59; CHECK: %tmp17 = phi i8 [ %tmp12.pre3, %bb15split ], [ %tmp17.pre, %bb1.bb15_crit_edge ]60 61bb19: ; preds = %bb1562 ret i1 %tmp1863}64 65declare void @isalnum() nounwind inlinehint ssp66