llvm-capstone/clang/test/Modules/cxx20-no-check-input.cppm
Chuanqi Xu 5b388f86aa [C++20] [Modules] Don't check input files for C++20 Modules
Close https://github.com/llvm/llvm-project/issues/62269

Currently, the compiler will emit errors when we compile C++20 modules
if the referenced files changed or got removed. This is because we reuse
the existing logic from Clang implicit modules. It is helpful for clang
implicit modules since it is implicit and we want to be sure things
don't go wrong. But it is not necessary for C++20 modules. The C++20
modules is explicit and it is build systems' responsibility to maintain
the dependencies. So the check in the compiler side may be an overkill.
2023-05-06 11:17:15 +08:00

57 lines
1.8 KiB
C++

// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: cd %t
//
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.cppm -emit-module-interface -o %t/a.pcm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
//
// RUN: echo "//Update" >> %t/foo.h
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
//
// RUN: echo "//Update" >> %t/a.cppm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
//
// RUN: rm -f %t/foo.h
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
//
// RUN: rm -f %t/a.cppm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
// RUN: %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
//--- foo.h
inline int foo = 43;
//--- a.cppm
// expected-no-diagnostics
module;
#include "foo.h"
export module a;
export using ::foo;
//--- a.ll
// check the LLVM IR are generated succesfully.
// CHECK: define{{.*}}@_ZGIW1a
//--- use.cpp
// expected-no-diagnostics
import a;
int use() {
return foo;
}