llvm-6502/test/Verifier/frameallocate.ll
Reid Kleckner d8f69a7201 Rename llvm.recoverframeallocation to llvm.framerecover
This name is less descriptive, but it sort of puts things in the
'llvm.frame...' namespace, relating it to frameallocate and
frameaddress. It also avoids using "allocate" and "allocation" together.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225752 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-13 01:51:34 +00:00

49 lines
1.2 KiB
LLVM

; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
declare i8* @llvm.frameallocate(i32)
declare i8* @llvm.framerecover(i8*, i8*)
define internal void @f() {
call i8* @llvm.frameallocate(i32 4)
call i8* @llvm.frameallocate(i32 4)
ret void
}
; CHECK: multiple calls to llvm.frameallocate in one function
define internal void @f_a(i32 %n) {
call i8* @llvm.frameallocate(i32 %n)
ret void
}
; CHECK: llvm.frameallocate argument must be constant integer size
define internal void @g() {
entry:
br label %not_entry
not_entry:
call i8* @llvm.frameallocate(i32 4)
ret void
}
; CHECK: llvm.frameallocate used outside of entry block
define internal void @h() {
call i8* @llvm.framerecover(i8* null, i8* null)
ret void
}
; CHECK: llvm.framerecover first argument must be function defined in this module
@global = constant i8 0
declare void @declaration()
define internal void @i() {
call i8* @llvm.framerecover(i8* @global, i8* null)
ret void
}
; CHECK: llvm.framerecover first argument must be function defined in this module
define internal void @j() {
call i8* @llvm.framerecover(i8* bitcast(void()* @declaration to i8*), i8* null)
ret void
}
; CHECK: llvm.framerecover first argument must be function defined in this module