12582965cSChuanqi Xu// Although the reduced BMI are not designed to be generated, 22582965cSChuanqi Xu// it is helpful for testing whether we've reduced the definitions. 32582965cSChuanqi Xu// 42582965cSChuanqi Xu// RUN: rm -rf %t 52582965cSChuanqi Xu// RUN: mkdir -p %t 62582965cSChuanqi Xu// RUN: split-file %s %t 72582965cSChuanqi Xu// 82582965cSChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/a.cppm \ 92582965cSChuanqi Xu// RUN: -emit-reduced-module-interface -o %t/a.pcm 102582965cSChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/b.cpp \ 11*7c1d9b15SFangrui Song// RUN: -fmodule-file=a=%t/a.pcm -emit-llvm -o - \ 122582965cSChuanqi Xu// RUN: | FileCheck %t/b.cpp 132582965cSChuanqi Xu 142582965cSChuanqi Xu//--- a.cppm 152582965cSChuanqi Xuexport module a; 162582965cSChuanqi Xu 172582965cSChuanqi Xuexport template <class T> 182582965cSChuanqi Xuclass A { 192582965cSChuanqi Xupublic: 202582965cSChuanqi Xu int member() { 212582965cSChuanqi Xu return 43; 222582965cSChuanqi Xu } 232582965cSChuanqi Xu}; 242582965cSChuanqi Xu 252582965cSChuanqi Xu// Instantiate `A<int>::member()`. 262582965cSChuanqi Xuexport int a_member = A<int>().member(); 272582965cSChuanqi Xu 282582965cSChuanqi Xuexport const int a = 43; 292582965cSChuanqi Xu 302582965cSChuanqi Xu//--- b.cpp 312582965cSChuanqi Xuimport a; 322582965cSChuanqi Xu 332582965cSChuanqi Xustatic_assert(a == 43); 342582965cSChuanqi Xu 352582965cSChuanqi Xuint b() { 362582965cSChuanqi Xu A<int> a; 372582965cSChuanqi Xu return a.member(); 382582965cSChuanqi Xu} 392582965cSChuanqi Xu 402582965cSChuanqi Xu// CHECK: define{{.*}}@_ZNW1a1AIiE6memberEv 41