mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-17 12:56:11 +00:00

This switches from the prototype syntax in P0273R0 ('module' and 'module implementation') to the consensus syntax 'export module' and 'module'. In passing, drop the "module declaration must be first" enforcement, since EWG seems to have changed its mind on that. llvm-svn: 301056
39 lines
1.5 KiB
C++
39 lines
1.5 KiB
C++
// Check compiling a module interface to a .pcm file.
|
|
//
|
|
// RUN: %clang -fmodules-ts -x c++-module --precompile %s -o %t.pcm -v 2>&1 | FileCheck %s --check-prefix=CHECK-PRECOMPILE
|
|
//
|
|
// CHECK-PRECOMPILE: -cc1 {{.*}} -emit-module-interface
|
|
// CHECK-PRECOMPILE-SAME: -o {{.*}}.pcm
|
|
// CHECK-PRECOMPILE-SAME: -x c++
|
|
// CHECK-PRECOMPILE-SAME: modules-ts.cpp
|
|
|
|
// Check compiling a .pcm file to a .o file.
|
|
//
|
|
// RUN: %clang -fmodules-ts %t.pcm -c -o %t.pcm.o -v 2>&1 | FileCheck %s --check-prefix=CHECK-COMPILE
|
|
//
|
|
// CHECK-COMPILE: -cc1 {{.*}} -emit-obj
|
|
// CHECK-COMPILE-SAME: -o {{.*}}.pcm.o
|
|
// CHECK-COMPILE-SAME: -x pcm
|
|
// CHECK-COMPILE-SAME: {{.*}}.pcm
|
|
|
|
// Check use of a .pcm file in another compilation.
|
|
//
|
|
// RUN: %clang -fmodules-ts -fmodule-file=%t.pcm -Dexport= %s -c -o %t.o -v 2>&1 | FileCheck %s --check-prefix=CHECK-USE
|
|
//
|
|
// CHECK-USE: -cc1
|
|
// CHECK-USE-SAME: -emit-obj
|
|
// CHECK-USE-SAME: -fmodule-file={{.*}}.pcm
|
|
// CHECK-USE-SAME: -o {{.*}}.o{{"?}} {{.*}}-x c++
|
|
// CHECK-USE-SAME: modules-ts.cpp
|
|
|
|
// Check combining precompile and compile steps works.
|
|
//
|
|
// RUN: %clang -fmodules-ts -x c++-module %s -c -o %t.pcm.o -v 2>&1 | FileCheck %s --check-prefix=CHECK-PRECOMPILE --check-prefix=CHECK-COMPILE
|
|
|
|
// Check that .cppm is treated as a module implicitly.
|
|
// RUN: cp %s %t.cppm
|
|
// RUN: %clang -fmodules-ts --precompile %t.cppm -o %t.pcm -v 2>&1 | FileCheck %s --check-prefix=CHECK-PRECOMPILE
|
|
|
|
// Note, we use -Dexport= to make this a module implementation unit when building the implementation.
|
|
export module foo;
|