35 lines
955 B
LLVM
35 lines
955 B
LLVM
;; 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='require<libcall-lowering-info>,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"}
|