35 lines · plain
1// RUN: rm -rf %t2// RUN: mkdir %t3// RUN: split-file %s %t4 5// RUN: %clang_cc1 -std=c++20 %t/a.cppm -triple %itanium_abi_triple -emit-module-interface -o %t/a.pcm6// RUN: %clang_cc1 -std=c++20 %t/a.cc -triple %itanium_abi_triple -fmodule-file=a=%t/a.pcm -emit-llvm -o - | FileCheck %t/a.cc7//8// RUN: %clang_cc1 -std=c++20 %t/a.cppm -triple %itanium_abi_triple -emit-reduced-module-interface -o %t/a.pcm9// RUN: %clang_cc1 -std=c++20 %t/a.cc -triple %itanium_abi_triple -fmodule-file=a=%t/a.pcm -emit-llvm -o - | FileCheck %t/a.cc10 11//--- a.cppm12export module a;13class base {14public:15 ~base() = default;16 virtual void foo();17};18 19template <class T>20class a : public base {21public:22 virtual void foo() override;23};24 25extern template class a<int>;26 27//--- a.cc28module a;29 30template <class T>31void a<T>::foo() {}32 33template class a<int>;34// CHECK: _ZTVW1a1aIiE35