1 | // RUN: rm -rf %t |
2 | // RUN: cd %S |
3 | // REQUIRES: x86-registered-target |
4 | // RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \ |
5 | // RUN: -iquote Inputs/merge-target-features \ |
6 | // RUN: -fno-implicit-modules \ |
7 | // RUN: -fmodule-map-file-home-is-cwd \ |
8 | // RUN: -emit-module -fmodule-name=foo -o %t/foo.pcm \ |
9 | // RUN: -triple i386-unknown-unknown \ |
10 | // RUN: -target-cpu i386 -target-feature +sse2 \ |
11 | // RUN: Inputs/merge-target-features/module.modulemap |
12 | // |
13 | // RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \ |
14 | // RUN: -iquote Inputs/merge-target-features \ |
15 | // RUN: -fno-implicit-modules \ |
16 | // RUN: -fmodule-map-file-home-is-cwd \ |
17 | // RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \ |
18 | // RUN: -fmodule-file=%t/foo.pcm \ |
19 | // RUN: -triple i386-unknown-unknown \ |
20 | // RUN: -target-cpu i386 \ |
21 | // RUN: -fsyntax-only merge-target-features.cpp 2>&1 \ |
22 | // RUN: | FileCheck --check-prefix=SUBSET --implicit-check-not=error: %s |
23 | // SUBSET: error: AST file was compiled with the target feature '+sse2' but the current translation unit is not |
24 | // SUBSET: error: {{.*}} configuration mismatch |
25 | // |
26 | // RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \ |
27 | // RUN: -iquote Inputs/merge-target-features \ |
28 | // RUN: -fno-implicit-modules \ |
29 | // RUN: -fmodule-map-file-home-is-cwd \ |
30 | // RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \ |
31 | // RUN: -fmodule-file=%t/foo.pcm \ |
32 | // RUN: -triple i386-unknown-unknown \ |
33 | // RUN: -target-cpu i386 -target-feature +sse2 \ |
34 | // RUN: -fsyntax-only merge-target-features.cpp 2>&1 \ |
35 | // RUN: | FileCheck --allow-empty --check-prefix=SAME %s |
36 | // SAME-NOT: error: |
37 | // |
38 | // RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \ |
39 | // RUN: -iquote Inputs/merge-target-features \ |
40 | // RUN: -fno-implicit-modules \ |
41 | // RUN: -fmodule-map-file-home-is-cwd \ |
42 | // RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \ |
43 | // RUN: -fmodule-file=%t/foo.pcm \ |
44 | // RUN: -triple i386-unknown-unknown \ |
45 | // RUN: -target-cpu i386 -target-feature +sse2 -target-feature +sse3 \ |
46 | // RUN: -fsyntax-only merge-target-features.cpp 2>&1 \ |
47 | // RUN: | FileCheck --allow-empty --check-prefix=SUPERSET %s |
48 | // SUPERSET-NOT: error: |
49 | // |
50 | // RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \ |
51 | // RUN: -iquote Inputs/merge-target-features \ |
52 | // RUN: -fno-implicit-modules \ |
53 | // RUN: -fmodule-map-file-home-is-cwd \ |
54 | // RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \ |
55 | // RUN: -fmodule-file=%t/foo.pcm \ |
56 | // RUN: -triple i386-unknown-unknown \ |
57 | // RUN: -target-cpu i386 -target-feature +cx16 \ |
58 | // RUN: -fsyntax-only merge-target-features.cpp 2>&1 \ |
59 | // RUN: | FileCheck --check-prefix=MISMATCH --implicit-check-not=error: %s |
60 | // MISMATCH: error: AST file was compiled with the target feature '+sse2' but the current translation unit is not |
61 | // MISMATCH: error: current translation unit is compiled with the target feature '+cx16' but the AST file was not |
62 | // MISMATCH: error: {{.*}} configuration mismatch |
63 | |
64 | #include "foo.h" |
65 | |
66 | int test(int x) { |
67 | return foo(x); |
68 | } |
69 | |