annotate clang/test/Modules/odr_hash.cl @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // Clear and create directories
anatofuz
parents:
diff changeset
2 // RUN: rm -rf %t
anatofuz
parents:
diff changeset
3 // RUN: mkdir %t
anatofuz
parents:
diff changeset
4 // RUN: mkdir %t/cache
anatofuz
parents:
diff changeset
5 // RUN: mkdir %t/Inputs
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 // Build first header file
anatofuz
parents:
diff changeset
8 // RUN: echo "#define FIRST" >> %t/Inputs/first.h
anatofuz
parents:
diff changeset
9 // RUN: cat %s >> %t/Inputs/first.h
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 // Build second header file
anatofuz
parents:
diff changeset
12 // RUN: echo "#define SECOND" >> %t/Inputs/second.h
anatofuz
parents:
diff changeset
13 // RUN: cat %s >> %t/Inputs/second.h
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 // Test that each header can compile
anatofuz
parents:
diff changeset
16 // RUN: %clang_cc1 -fsyntax-only -x c++ %t/Inputs/first.h -cl-std=CL2.0
anatofuz
parents:
diff changeset
17 // RUN: %clang_cc1 -fsyntax-only -x c++ %t/Inputs/second.h -cl-std=CL2.0
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 // Build module map file
anatofuz
parents:
diff changeset
20 // RUN: echo "module FirstModule {" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
21 // RUN: echo " header \"first.h\"" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
22 // RUN: echo "}" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
23 // RUN: echo "module SecondModule {" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
24 // RUN: echo " header \"second.h\"" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
25 // RUN: echo "}" >> %t/Inputs/module.map
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // Run test
anatofuz
parents:
diff changeset
28 // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/cache -x c++ -I%t/Inputs -verify %s -cl-std=CL2.0
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 #if !defined(FIRST) && !defined(SECOND)
anatofuz
parents:
diff changeset
31 #include "first.h"
anatofuz
parents:
diff changeset
32 #include "second.h"
anatofuz
parents:
diff changeset
33 #endif
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 #if defined(FIRST)
anatofuz
parents:
diff changeset
37 void invalid1() {
anatofuz
parents:
diff changeset
38 typedef read_only pipe int x;
anatofuz
parents:
diff changeset
39 }
anatofuz
parents:
diff changeset
40 void invalid2() {
anatofuz
parents:
diff changeset
41 typedef read_only pipe int x;
anatofuz
parents:
diff changeset
42 }
anatofuz
parents:
diff changeset
43 void valid() {
anatofuz
parents:
diff changeset
44 typedef read_only pipe int x;
anatofuz
parents:
diff changeset
45 typedef write_only pipe int y;
anatofuz
parents:
diff changeset
46 typedef read_write pipe int z;
anatofuz
parents:
diff changeset
47 }
anatofuz
parents:
diff changeset
48 #elif defined(SECOND)
anatofuz
parents:
diff changeset
49 void invalid1() {
anatofuz
parents:
diff changeset
50 typedef write_only pipe int x;
anatofuz
parents:
diff changeset
51 }
anatofuz
parents:
diff changeset
52 void invalid2() {
anatofuz
parents:
diff changeset
53 typedef read_only pipe float x;
anatofuz
parents:
diff changeset
54 }
anatofuz
parents:
diff changeset
55 void valid() {
anatofuz
parents:
diff changeset
56 typedef read_only pipe int x;
anatofuz
parents:
diff changeset
57 typedef write_only pipe int y;
anatofuz
parents:
diff changeset
58 typedef read_write pipe int z;
anatofuz
parents:
diff changeset
59 }
anatofuz
parents:
diff changeset
60 #else
anatofuz
parents:
diff changeset
61 void run() {
anatofuz
parents:
diff changeset
62 invalid1();
anatofuz
parents:
diff changeset
63 // expected-error@second.h:* {{'invalid1' has different definitions in different modules; definition in module 'SecondModule' first difference is function body}}
anatofuz
parents:
diff changeset
64 // expected-note@first.h:* {{but in 'FirstModule' found a different body}}
anatofuz
parents:
diff changeset
65 invalid2();
anatofuz
parents:
diff changeset
66 // expected-error@second.h:* {{'invalid2' has different definitions in different modules; definition in module 'SecondModule' first difference is function body}}
anatofuz
parents:
diff changeset
67 // expected-note@first.h:* {{but in 'FirstModule' found a different body}}
anatofuz
parents:
diff changeset
68 valid();
anatofuz
parents:
diff changeset
69 }
anatofuz
parents:
diff changeset
70 #endif
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72
anatofuz
parents:
diff changeset
73 // Keep macros contained to one file.
anatofuz
parents:
diff changeset
74 #ifdef FIRST
anatofuz
parents:
diff changeset
75 #undef FIRST
anatofuz
parents:
diff changeset
76 #endif
anatofuz
parents:
diff changeset
77
anatofuz
parents:
diff changeset
78 #ifdef SECOND
anatofuz
parents:
diff changeset
79 #undef SECOND
anatofuz
parents:
diff changeset
80 #endif