From e1433f24cf714c49b266e8cefdbbb8a464ffcb8e Mon Sep 17 00:00:00 2001 From: Gordon Henriksen Date: Tue, 25 Dec 2007 02:31:26 +0000 Subject: Noting and enforcing that GC intrinsics are valid only within a function with GC. This will catch the error when the inliner inlines a function with GC into a caller with no GC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45350 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/Generic/GC/lower_gcroot.ll | 2 +- test/CodeGen/Generic/GC/outside.ll | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/Generic/GC/outside.ll (limited to 'test/CodeGen') diff --git a/test/CodeGen/Generic/GC/lower_gcroot.ll b/test/CodeGen/Generic/GC/lower_gcroot.ll index 4b0a17478f..bd5a2bd14b 100644 --- a/test/CodeGen/Generic/GC/lower_gcroot.ll +++ b/test/CodeGen/Generic/GC/lower_gcroot.ll @@ -2,7 +2,7 @@ %Env = type i8* -define void @.main(%Env) { +define void @.main(%Env) gc "shadow-stack" { %Root = alloca %Env call void @llvm.gcroot( %Env* %Root, %Env null ) unreachable diff --git a/test/CodeGen/Generic/GC/outside.ll b/test/CodeGen/Generic/GC/outside.ll new file mode 100644 index 0000000000..122bfe4a47 --- /dev/null +++ b/test/CodeGen/Generic/GC/outside.ll @@ -0,0 +1,10 @@ +; RUN: not llvm-as < %s + +declare void @llvm.gcroot(i8**, i8*) + +define void @f(i8* %x) { + %root = alloca i8* + call void @llvm.gcroot(i8** %root, i8* null) + store i8* %x, i8** %root + ret void +} -- cgit v1.2.3-70-g09d2