[libc] Switch to using the generic `<gpuintrin.h>` implementations (#121810)
[llvm-project.git] / clang / test / Modules / decl-params-determinisim.m
blobdb4ed3326538856f166c21ba71ed478c3ae43987
1 /// Test determinisim when serializing anonymous decls. Create enough Decls in
2 /// DeclContext that can overflow the small storage of SmallPtrSet to make sure
3 /// the serialization does not rely on iteration order of SmallPtrSet.
4 // RUN: rm -rf %t.dir
5 // RUN: split-file %s %t.dir
6 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps \
7 // RUN:   -fmodules-cache-path=%t.dir/cache -triple x86_64-apple-macosx10.11.0 \
8 // RUN:   -I%t.dir/headers %t.dir/main.m -fdisable-module-hash -Wno-visibility
9 // RUN: mv %t.dir/cache/A.pcm %t1.pcm
10 /// Check the order of the decls first. If LLVM_ENABLE_REVERSE_ITERATION is on,
11 /// it will fail the test early if the output is depending on the order of items
12 /// in containers that has non-deterministic orders.
13 // RUN: llvm-bcanalyzer --dump --disable-histogram %t1.pcm | FileCheck %s
14 // RUN: rm -rf %t.dir/cache
15 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps \
16 // RUN:   -fmodules-cache-path=%t.dir/cache -triple x86_64-apple-macosx10.11.0 \
17 // RUN:   -I%t.dir/headers %t.dir/main.m -fdisable-module-hash -Wno-visibility
18 // RUN: mv %t.dir/cache/A.pcm %t2.pcm
19 // RUN: diff %t1.pcm %t2.pcm
21 /// Spot check entries to make sure they are in current ordering.
22 /// op6 encodes the anonymous decl number which should be in order.
24 /// NOTE: This test case is on determinism of TypeID for function declaration.
25 /// Change related to TypeID (or PredefinedTypeIDs) will affect the result and
26 /// will require update for this test case. Currently, TypeID is at op6 and the
27 /// test checks the IDs are in strict ordering.
29 // CHECK: <TYPE_FUNCTION_PROTO
30 // CHECK-NEXT: <DECL_PARM_VAR
31 // CHECK-SAME: op5=13
32 // CHECK-NEXT: <DECL_PARM_VAR
33 // CHECK-SAME: op5=14
34 // CHECK-NEXT: <DECL_PARM_VAR
35 // CHECK-SAME: op5=15
36 // CHECK-NEXT: <DECL_PARM_VAR
37 // CHECK-SAME: op5=16
39 /// Decl records start at 43
40 // CHECK: <DECL_RECORD
41 // CHECK-SAME: op5=54
42 // CHECK-NEXT: <DECL_RECORD
43 // CHECK-SAME: op5=55
44 // CHECK-NEXT: <DECL_RECORD
45 // CHECK-SAME: op5=56
46 // CHECK-NEXT: <DECL_RECORD
47 // CHECK-SAME: op5=57
49 //--- headers/a.h
50 void f(struct A0 *a0,
51        struct A1 *a1,
52        struct A2 *a2,
53        struct A3 *a3,
54        struct A4 *a4,
55        struct A5 *a5,
56        struct A6 *a6,
57        struct A7 *a7,
58        struct A8 *a8,
59        struct A9 *a9,
60        struct A10 *a10,
61        struct A11 *a11,
62        struct A12 *a12,
63        struct A13 *a13,
64        struct A14 *a14,
65        struct A15 *a15,
66        struct A16 *a16,
67        struct A17 *a17,
68        struct A18 *a18,
69        struct A19 *a19,
70        struct A20 *a20,
71        struct A21 *a21,
72        struct A22 *a22,
73        struct A23 *a23,
74        struct A24 *a24,
75        struct A25 *a25,
76        struct A26 *a26,
77        struct A27 *a27,
78        struct A28 *a28,
79        struct A29 *a29,
80        struct A30 *a30,
81        struct A31 *a31,
82        struct A32 *a32,
83        struct A33 *a33,
84        struct A34 *a34,
85        struct A35 *a35,
86        struct A36 *a36,
87        struct A37 *a37,
88        struct A38 *a38,
89        struct A39 *a39,
90        struct A40 *a40);
93 //--- headers/module.modulemap
95 module A {
96   header "a.h"
99 //--- main.m
101 #import <a.h>