mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Adjusting verification of "llvm.gc*" intrinsic prototypes to match
LangRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45349 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
13
test/CodeGen/Generic/GC/badreadproto.ll
Normal file
13
test/CodeGen/Generic/GC/badreadproto.ll
Normal file
@@ -0,0 +1,13 @@
|
||||
; RUN: not llvm-as < %s
|
||||
|
||||
%list = type { i32, %list* }
|
||||
|
||||
; This usage is invalid now; instead, objects must be bitcast to i8* for input
|
||||
; to the gc intrinsics.
|
||||
declare %list* @llvm.gcread(%list*, %list**)
|
||||
|
||||
define %list* @tl(%list* %l) gc "example" {
|
||||
%hd.ptr = getelementptr %list* %l, i32 0, i32 0
|
||||
%hd = call %list* @llvm.gcread(%list* %l, %list** %hd.ptr)
|
||||
ret i32 %tmp
|
||||
}
|
13
test/CodeGen/Generic/GC/badrootproto.ll
Normal file
13
test/CodeGen/Generic/GC/badrootproto.ll
Normal file
@@ -0,0 +1,13 @@
|
||||
; RUN: not llvm-as < %s
|
||||
|
||||
%list = type { i32, %list* }
|
||||
%meta = type opaque
|
||||
|
||||
; This usage is invalid now; instead, objects must be bitcast to i8* for input
|
||||
; to the gc intrinsics.
|
||||
declare void @llvm.gcroot(%list*, %meta*)
|
||||
|
||||
define void @root() gc "example" {
|
||||
%x.var = alloca i8*
|
||||
call void @llvm.gcroot(i8** %x.var, %meta* null)
|
||||
}
|
22
test/CodeGen/Generic/GC/badwriteproto.ll
Normal file
22
test/CodeGen/Generic/GC/badwriteproto.ll
Normal file
@@ -0,0 +1,22 @@
|
||||
; RUN: not llvm-as < %s
|
||||
|
||||
%list = type { i32, %list* }
|
||||
|
||||
; This usage is invalid now; instead, objects must be bitcast to i8* for input
|
||||
; to the gc intrinsics.
|
||||
declare void @llvm.gcwrite(%list*, %list*, %list**)
|
||||
|
||||
define %list* @cons(i32 %hd, %list* %tl) gc "example" {
|
||||
%tmp = call i8* @gcalloc(i32 bitcast(%list* getelementptr(%list* null, i32 1) to i32))
|
||||
%cell = bitcast i8* %tmp to %list*
|
||||
|
||||
%hd.ptr = getelementptr %list* %cell, i32 0, i32 0
|
||||
store i32 %hd, i32* %hd.ptr
|
||||
|
||||
%tl.ptr = getelementptr %list* %cell, i32 0, i32 0
|
||||
call void @llvm.gcwrite(%list* %tl, %list* %cell, %list** %tl.ptr)
|
||||
|
||||
ret %cell.2
|
||||
}
|
||||
|
||||
declare i8* @gcalloc(i32)
|
@@ -1,6 +1,6 @@
|
||||
; RUN: llvm-as < %s | llc
|
||||
|
||||
%Env = type opaque*
|
||||
%Env = type i8*
|
||||
|
||||
define void @.main(%Env) {
|
||||
%Root = alloca %Env
|
||||
|
Reference in New Issue
Block a user