; RUN: opt -passes=function-attrs -S < %s ; Regression test for a null-returning bug of getUnderlyingObjectAggressive(). ; This should not crash. define void @phi_cycle() { bb: unreachable bb1: ; preds = %bb17 br label %bb2 bb2: ; preds = %bb5, %bb1 %phi = phi ptr [ %phi6, %bb1 ], [ %phi6, %bb5 ] br i1 poison, label %bb4, label %bb3 bb3: ; preds = %bb2 %getelementptr = getelementptr inbounds i8, ptr %phi, i32 poison br label %bb5 bb4: ; preds = %bb2 br label %bb7 bb5: ; preds = %bb15, %bb3 %phi6 = phi ptr [ %getelementptr, %bb3 ], [ %phi16, %bb15 ] br i1 poison, label %bb17, label %bb2 bb7: ; preds = %bb15, %bb4 %phi8 = phi ptr [ %phi, %bb4 ], [ %phi16, %bb15 ] br i1 poison, label %bb11, label %bb9 bb9: ; preds = %bb7 %getelementptr10 = getelementptr inbounds i8, ptr %phi8, i32 1 store i8 poison, ptr %phi8, align 1 br label %bb15 bb11: ; preds = %bb7 br i1 poison, label %bb13, label %bb12 bb12: ; preds = %bb11 br label %bb13 bb13: ; preds = %bb12, %bb11 %getelementptr14 = getelementptr inbounds i8, ptr %phi8, i32 poison br label %bb15 bb15: ; preds = %bb13, %bb9 %phi16 = phi ptr [ %getelementptr14, %bb13 ], [ %getelementptr10, %bb9 ] br i1 poison, label %bb5, label %bb7 bb17: ; preds = %bb5 br label %bb1 }