Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / no-implicit-std-cxx-module.cppm
blob0432159fed1801858d258ade8088a65d0a25dfde
1 // RUN: rm -rf %t
2 // RUN: split-file %s %t
3 // RUN: cd %t
4 //
5 // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/b.cppm -o %t/b.pcm
6 // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cppm -fmodule-file=b=%t/b.pcm \
7 // RUN:     -o %t/a.pcm
8 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
9 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only \
10 // RUN:     -Wno-read-modules-implicitly -DNO_DIAG
11 // RUN: %clang_cc1 -std=c++20 %t/user.cpp -fmodule-file=a=%t/a.pcm -fmodule-file=b=%t/b.pcm \
12 // RUN:     -DNO_DIAG -verify -fsyntax-only
14 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 | FileCheck %t/a.cppm
15 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -fmodule-file=b=%t/b.pcm -S -emit-llvm -o - 2>&1 \
16 // RUN:     | FileCheck %t/a.cppm -check-prefix=CHECK-CORRECT
18 // RUN: mkdir -p %t/tmp
19 // RUN: mv %t/b.pcm %t/tmp/b.pcm
20 // RUN: not %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 \
21 // RUN:     | FileCheck %t/a.cppm -check-prefix=CHECK-ERROR
22 // RUN: %clang_cc1 -std=c++20 %t/a.pcm -S -emit-llvm -o - 2>&1 -fmodule-file=b=%t/tmp/b.pcm \
23 // RUN:     | FileCheck %t/a.cppm -check-prefix=CHECK-CORRECT
25 //--- b.cppm
26 export module b;
27 export int b() {
28     return 43;
31 //--- a.cppm
32 export module a;
33 import b;
34 export int a() {
35     return b() + 43;
38 // CHECK: it is deprecated to read module 'b' implicitly;
40 // CHECK-CORRECT-NOT: warning
41 // CHECK-CORRECT-NOT: error
43 // CHECK-ERROR: error: module file{{.*}}not found: module file not found
46 //--- user.cpp
47 #ifdef NO_DIAG
48 // expected-no-diagnostics
49 #else
50  // expected-warning@+2 {{it is deprecated to read module 'b' implicitly;}}
51 #endif
52 import a;
53 int use() {
54     return a();