Alexander Richardson | b0b9884 | 2018-02-27 11:15:11 +0000 | [diff] [blame] | 1 | ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s |
Alexander Richardson | 47ff67b | 2018-08-23 09:25:17 +0000 | [diff] [blame] | 2 | ; RUN: llvm-as %s -data-layout=P42 -o - | llvm-dis - -o - | FileCheck %s -check-prefix PROGAS42 |
Alexander Richardson | b0b9884 | 2018-02-27 11:15:11 +0000 | [diff] [blame] | 3 | |
| 4 | ; Check that numbered variables in a nonzero program address space 200 can be used in a call instruction |
| 5 | |
Alexander Richardson | 47ff67b | 2018-08-23 09:25:17 +0000 | [diff] [blame] | 6 | define i8 @test_unnamed(i8(i32)*, i8(i32) addrspace(42)*) { |
| 7 | ; Calls with explicit address spaces are fine: |
| 8 | call addrspace(0) i8 %0(i32 0) |
| 9 | call addrspace(42) i8 %1(i32 0) |
| 10 | ; this call is fine if the program address space is 42 |
| 11 | call i8 %1(i32 0) |
| 12 | ; CHECK: call-nonzero-program-addrspace-2.ll:[[@LINE-1]]:11: error: '%1' defined with type 'i8 (i32) addrspace(42)*' but expected 'i8 (i32)*' |
Alexander Richardson | b0b9884 | 2018-02-27 11:15:11 +0000 | [diff] [blame] | 13 | ret i8 0 |
| 14 | } |
Alexander Richardson | 47ff67b | 2018-08-23 09:25:17 +0000 | [diff] [blame] | 15 | |
| 16 | ; PROGAS42: target datalayout = "P42" |
| 17 | ; PROGAS42: define i8 @test_unnamed(i8 (i32)*, i8 (i32) addrspace(42)*) addrspace(42) { |
| 18 | ; PROGAS42-NEXT: %3 = call addrspace(0) i8 %0(i32 0) |
| 19 | ; PROGAS42-NEXT: %4 = call addrspace(42) i8 %1(i32 0) |
| 20 | ; PROGAS42-NEXT: %5 = call addrspace(42) i8 %1(i32 0) |
| 21 | ; PROGAS42-NEXT: ret i8 0 |
| 22 | ; PROGAS42-NEXT: } |