OLD | NEW |
1 ; RUN: not pnacl-abicheck < %s | FileCheck %s | 1 ; RUN: not pnacl-abicheck < %s | FileCheck %s |
2 ; RUN: not pnacl-abicheck -pnaclabi-allow-debug-metadata < %s | \ | 2 ; RUN: not pnacl-abicheck -pnaclabi-allow-debug-metadata < %s | \ |
3 ; RUN: FileCheck %s --check-prefix=DBG | 3 ; RUN: FileCheck %s --check-prefix=DBG |
4 | 4 |
5 ; DBG-NOT: disallowed | 5 ; DBG-NOT: disallowed |
6 | 6 |
7 ; A debuginfo version is required. | 7 ; A debuginfo version is required. |
8 !llvm.module.flags = !{!0} | 8 !llvm.module.flags = !{!0} |
9 !0 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} | 9 !0 = !{i32 1, !"Debug Info Version", i32 3} |
10 !1 = metadata !{} | 10 !1 = !{} |
| 11 !2 = !MDExpression() |
11 | 12 |
12 declare void @llvm.dbg.declare(metadata, metadata) | 13 declare void @llvm.dbg.declare(metadata, metadata, metadata) |
13 declare void @llvm.dbg.value(metadata, i64, metadata) | 14 declare void @llvm.dbg.value(metadata, i64, metadata) |
14 | 15 |
15 ; CHECK: Function llvm.dbg.declare is a disallowed LLVM intrinsic | 16 ; CHECK: Function llvm.dbg.declare is a disallowed LLVM intrinsic |
16 ; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic | 17 ; CHECK: Function llvm.dbg.value is a disallowed LLVM intrinsic |
17 | 18 |
18 | 19 |
19 define internal void @debug_declare(i32 %val) { | 20 define internal void @debug_declare(i32 %val) { |
20 ; We normally expect llvm.dbg.declare to be used on an alloca. | 21 ; We normally expect llvm.dbg.declare to be used on an alloca. |
21 %var = alloca [4 x i8] | 22 %var = alloca [4 x i8] |
22 tail call void @llvm.dbg.declare(metadata !{[4 x i8]* %var}, metadata !1) | 23 tail call void @llvm.dbg.declare(metadata [4 x i8]* %var, metadata !1, metadat
a !2) |
23 tail call void @llvm.dbg.declare(metadata !{i32 %val}, metadata !1) | 24 tail call void @llvm.dbg.declare(metadata i32 %val, metadata !1, metadata !2) |
24 ret void | 25 ret void |
25 } | 26 } |
26 | 27 |
27 define internal void @debug_value(i32 %ptr_as_int, i32 %val) { | 28 define internal void @debug_value(i32 %ptr_as_int, i32 %val) { |
28 %ptr = inttoptr i32 %ptr_as_int to i8* | 29 %ptr = inttoptr i32 %ptr_as_int to i8* |
29 tail call void @llvm.dbg.value(metadata !{i8* %ptr}, i64 2, metadata !1) | 30 tail call void @llvm.dbg.value(metadata i8* %ptr, i64 2, metadata !1) |
30 tail call void @llvm.dbg.value(metadata !{i32 %val}, i64 1, metadata !1) | 31 tail call void @llvm.dbg.value(metadata i32 %val, i64 1, metadata !1) |
31 ret void | 32 ret void |
32 } | 33 } |
33 | 34 |
34 ; FileCheck gives an error if its input file is empty, so ensure that | 35 ; FileCheck gives an error if its input file is empty, so ensure that |
35 ; the output of pnacl-abicheck is non-empty by generating at least one | 36 ; the output of pnacl-abicheck is non-empty by generating at least one |
36 ; error. | 37 ; error. |
37 declare void @bad_func(ppc_fp128 %bad_arg) | 38 declare void @bad_func(ppc_fp128 %bad_arg) |
38 ; DBG: Function bad_func has disallowed type: void (ppc_fp128) | 39 ; DBG: Function bad_func has disallowed type: void (ppc_fp128) |
| 40 ; Check that there are no complaints about dbg.declare or dbg.value |
| 41 ; DBG-NOT: dbg |
OLD | NEW |