xref: /llvm-project/llvm/test/Assembler/captures-errors.ll (revision 22e9024c9f374c0c740647829050c289673dbb11)
1*22e9024cSNikita Popov; RUN: split-file --leading-lines %s %t
2*22e9024cSNikita Popov; RUN: not llvm-as < %t/missing-lparen.ll 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-LPAREN
3*22e9024cSNikita Popov; RUN: not llvm-as < %t/missing-rparen.ll 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-RPAREN
4*22e9024cSNikita Popov; RUN: not llvm-as < %t/missing-rparen-none.ll 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-RPAREN-NONE
5*22e9024cSNikita Popov; RUN: not llvm-as < %t/missing-colon.ll 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-COLON
6*22e9024cSNikita Popov; RUN: not llvm-as < %t/invalid-component.ll 2>&1 | FileCheck %s --check-prefix=CHECK-INVALID-COMPONENT
7*22e9024cSNikita Popov; RUN: not llvm-as < %t/duplicate-ret.ll 2>&1 | FileCheck %s --check-prefix=CHECK-DUPLICATE-RET
8*22e9024cSNikita Popov; RUN: not llvm-as < %t/none-after.ll 2>&1 | FileCheck %s --check-prefix=CHECK-NONE-AFTER
9*22e9024cSNikita Popov; RUN: not llvm-as < %t/none-before.ll 2>&1 | FileCheck %s --check-prefix=CHECK-NONE-BEFORE
10*22e9024cSNikita Popov; RUN: not opt -disable-output < %t/non-pointer-type.ll 2>&1 | FileCheck %s --check-prefix=CHECK-NON-POINTER-TYPE
11*22e9024cSNikita Popov
12*22e9024cSNikita Popov;--- missing-lparen.ll
13*22e9024cSNikita Popov
14*22e9024cSNikita Popov; CHECK-MISSING-LPAREN: <stdin>:[[@LINE+1]]:32: error: expected '('
15*22e9024cSNikita Popovdefine void @test(ptr captures %p) {
16*22e9024cSNikita Popov  ret void
17*22e9024cSNikita Popov}
18*22e9024cSNikita Popov
19*22e9024cSNikita Popov;--- missing-rparen.ll
20*22e9024cSNikita Popov
21*22e9024cSNikita Popov; CHECK-MISSING-RPAREN: <stdin>:[[@LINE+1]]:40: error: expected ',' or ')'
22*22e9024cSNikita Popovdefine void @test(ptr captures(address %p) {
23*22e9024cSNikita Popov  ret void
24*22e9024cSNikita Popov}
25*22e9024cSNikita Popov
26*22e9024cSNikita Popov;--- missing-rparen-none.ll
27*22e9024cSNikita Popov
28*22e9024cSNikita Popov; CHECK-MISSING-RPAREN-NONE: <stdin>:[[@LINE+1]]:37: error: expected ',' or ')'
29*22e9024cSNikita Popovdefine void @test(ptr captures(none %p) {
30*22e9024cSNikita Popov  ret void
31*22e9024cSNikita Popov}
32*22e9024cSNikita Popov
33*22e9024cSNikita Popov;--- missing-colon.ll
34*22e9024cSNikita Popov
35*22e9024cSNikita Popov; CHECK-MISSING-COLON: <stdin>:[[@LINE+1]]:36: error: expected ':'
36*22e9024cSNikita Popovdefine void @test(ptr captures(ret address) %p) {
37*22e9024cSNikita Popov  ret void
38*22e9024cSNikita Popov}
39*22e9024cSNikita Popov
40*22e9024cSNikita Popov;--- invalid-component.ll
41*22e9024cSNikita Popov
42*22e9024cSNikita Popov; CHECK-INVALID-COMPONENT: <stdin>:[[@LINE+1]]:32: error: expected one of 'none', 'address', 'address_is_null', 'provenance' or 'read_provenance'
43*22e9024cSNikita Popovdefine void @test(ptr captures(foo) %p) {
44*22e9024cSNikita Popov  ret void
45*22e9024cSNikita Popov}
46*22e9024cSNikita Popov
47*22e9024cSNikita Popov;--- duplicate-ret.ll
48*22e9024cSNikita Popov
49*22e9024cSNikita Popov; CHECK-DUPLICATE-RET: <stdin>:[[@LINE+1]]:51: error: duplicate 'ret' location
50*22e9024cSNikita Popovdefine void @test(ptr captures(ret: address, ret: provenance) %p) {
51*22e9024cSNikita Popov  ret void
52*22e9024cSNikita Popov}
53*22e9024cSNikita Popov
54*22e9024cSNikita Popov;--- none-after.ll
55*22e9024cSNikita Popov
56*22e9024cSNikita Popov; CHECK-NONE-AFTER: <stdin>:[[@LINE+1]]:45: error: cannot use 'none' with other component
57*22e9024cSNikita Popovdefine void @test(ptr captures(address, none) %p) {
58*22e9024cSNikita Popov  ret void
59*22e9024cSNikita Popov}
60*22e9024cSNikita Popov
61*22e9024cSNikita Popov;--- none-before.ll
62*22e9024cSNikita Popov
63*22e9024cSNikita Popov; CHECK-NONE-BEFORE: <stdin>:[[@LINE+1]]:38: error: cannot use 'none' with other component
64*22e9024cSNikita Popovdefine void @test(ptr captures(none, address) %p) {
65*22e9024cSNikita Popov  ret void
66*22e9024cSNikita Popov}
67*22e9024cSNikita Popov
68*22e9024cSNikita Popov;--- non-pointer-type.ll
69*22e9024cSNikita Popov
70*22e9024cSNikita Popov; CHECK-NON-POINTER-TYPE: Attribute 'captures(none)' applied to incompatible type!
71*22e9024cSNikita Popovdefine void @test(i32 captures(none) %p) {
72*22e9024cSNikita Popov  ret void
73*22e9024cSNikita Popov}
74