mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-05-13 17:37:00 +00:00

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.
57 lines
1.8 KiB
C++
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;
|
|
}
|
|
|