| ; 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 |