[lit] Remove LitTestCase
[llvm-complete.git] / test / Verifier / frameescape.ll
blob074098b990dc8def1e7525e024ddd78c001e52c6
1 ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
3 declare void @llvm.localescape(...)
4 declare i8* @llvm.localrecover(i8*, i8*, i32)
6 define internal void @f() {
7   %a = alloca i8
8   call void (...) @llvm.localescape(i8* %a)
9   call void (...) @llvm.localescape(i8* %a)
10   ret void
12 ; CHECK: multiple calls to llvm.localescape in one function
14 define internal void @g() {
15 entry:
16   %a = alloca i8
17   br label %not_entry
18 not_entry:
19   call void (...) @llvm.localescape(i8* %a)
20   ret void
22 ; CHECK: llvm.localescape used outside of entry block
24 define internal void @h() {
25   call i8* @llvm.localrecover(i8* null, i8* null, i32 0)
26   ret void
28 ; CHECK: llvm.localrecover first argument must be function defined in this module
30 @global = constant i8 0
32 declare void @declaration()
34 define internal void @i() {
35   call i8* @llvm.localrecover(i8* @global, i8* null, i32 0)
36   ret void
38 ; CHECK: llvm.localrecover first argument must be function defined in this module
40 define internal void @j() {
41   call i8* @llvm.localrecover(i8* bitcast(void()* @declaration to i8*), i8* null, i32 0)
42   ret void
44 ; CHECK: llvm.localrecover first argument must be function defined in this module
46 define internal void @k(i32 %n) {
47   call i8* @llvm.localrecover(i8* bitcast(void()* @f to i8*), i8* null, i32 %n)
48   ret void
50 ; CHECK: idx argument of llvm.localrecover must be a constant int
52 define internal void @l(i8* %b) {
53   %a = alloca i8
54   call void (...) @llvm.localescape(i8* %a, i8* %b)
55   ret void
57 ; CHECK: llvm.localescape only accepts static allocas
59 define internal void @m() {
60   %a = alloca i8
61   call void (...) @llvm.localescape(i8* %a)
62   ret void
65 define internal void @n(i8* %fp) {
66   call i8* @llvm.localrecover(i8* bitcast(void ()* @m to i8*), i8* %fp, i32 1)
67   ret void
69 ; CHECK: all indices passed to llvm.localrecover must be less than the number of arguments passed ot llvm.localescape in the parent function