;; This is a minimal reproducer that caused StackProtector to crash with a bad cast when ;; CrossDSOCFI is used. This test just needs to not crash. ; REQUIRES: x86-registered-target ; RUN: opt -mtriple=x86_64-pc-linux-gnu %s -passes=lowertypetests,cross-dso-cfi,stack-protector define hidden void @__stack_chk_fail() !type !1{ unreachable } define void @store_captures() sspstrong { entry: %a = alloca i32, align 4 %j = alloca ptr, align 8 store ptr %a, ptr %j, align 8 ret void } define void @func(ptr %0) { entry: %1 = call i1 @llvm.type.test(ptr %0, metadata !"typeid") br i1 %1, label %cont, label %trap trap: ; preds = %entry call void @llvm.trap() unreachable cont: ; preds = %entry call void %0() ret void } !llvm.module.flags = !{!0} !0 = !{i32 4, !"Cross-DSO CFI", i32 1} !1 = !{i64 0, !"typeid"}