mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
ae19e5c0f7
Most users won't have to worry about this as all of the 'getOrInsertFunction' functions on Module will default to the program address space. An overload has been added to Function::Create to abstract away the details for most callers. This is based on https://reviews.llvm.org/D37054 but without the changes to make passing a Module to Function::Create() mandatory. I have also added some more tests and fixed the LLParser to accept call instructions for types in the program address space. Reviewed By: bjope Differential Revision: https://reviews.llvm.org/D47541 llvm-svn: 340519
24 lines
1.3 KiB
LLVM
24 lines
1.3 KiB
LLVM
; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
|
|
; RUN: llvm-as %s -data-layout=P42 -o - | llvm-dis - -o - | FileCheck %s -check-prefix PROGAS42
|
|
|
|
; Check that variables in a nonzero program address space 42 can be used in a call instruction
|
|
|
|
define i8 @test(i8(i32)* %fnptr0, i8(i32) addrspace(42)* %fnptr42) {
|
|
%explicit_as_0 = call addrspace(0) i8 %fnptr0(i32 0)
|
|
%explicit_as_42 = call addrspace(42) i8 %fnptr42(i32 0)
|
|
; Calling %fnptr42 without an explicit addrspace() in the call instruction is only okay if the program AS is 42
|
|
%call_no_as = call i8 %fnptr42(i32 0)
|
|
; CHECK: call-nonzero-program-addrspace.ll:[[@LINE-1]]:25: error: '%fnptr42' defined with type 'i8 (i32) addrspace(42)*' but expected 'i8 (i32)*'
|
|
ret i8 0
|
|
}
|
|
|
|
; PROGAS42: target datalayout = "P42"
|
|
; PROGAS42: define i8 @test(i8 (i32)* %fnptr0, i8 (i32) addrspace(42)* %fnptr42) addrspace(42) {
|
|
; Print addrspace(0) since the program address space is non-zero:
|
|
; PROGAS42-NEXT: %explicit_as_0 = call addrspace(0) i8 %fnptr0(i32 0)
|
|
; Also print addrspace(42) since we always print non-zero addrspace:
|
|
; PROGAS42-NEXT: %explicit_as_42 = call addrspace(42) i8 %fnptr42(i32 0)
|
|
; PROGAS42-NEXT: %call_no_as = call addrspace(42) i8 %fnptr42(i32 0)
|
|
; PROGAS42-NEXT: ret i8 0
|
|
; PROGAS42-NEXT: }
|