1*786a4f42SChuanqi Xu// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2*786a4f42SChuanqi Xu// RUN: rm -rf %t
3*786a4f42SChuanqi Xu// RUN: split-file %s %t
4*786a4f42SChuanqi Xu//
5*786a4f42SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -xc++-user-header -emit-header-unit %t/header.h -o %t/header.pcm
6*786a4f42SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -fmodule-file=%t/header.pcm %t/M.cppm -S -emit-llvm -o - | FileCheck %t/M.cppm
7*786a4f42SChuanqi Xu// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple -fmodule-file=%t/header.pcm %t/Use.cpp -S -emit-llvm -o - | FileCheck %t/Use.cpp
8*786a4f42SChuanqi Xu//
9*786a4f42SChuanqi Xu//--- header.h
10*786a4f42SChuanqi Xuint foo();
11*786a4f42SChuanqi Xuint i = foo();
12*786a4f42SChuanqi Xu
13*786a4f42SChuanqi Xu//--- M.cppm
14*786a4f42SChuanqi Xumodule;
15*786a4f42SChuanqi Xuimport "header.h";
16*786a4f42SChuanqi Xuexport module M;
17*786a4f42SChuanqi Xu
18*786a4f42SChuanqi Xu// CHECK: @i = {{.*}}global i32 0
19*786a4f42SChuanqi Xu// CHECK: void @__cxx_global_var_init()
20*786a4f42SChuanqi Xu// CHECK-NEXT: entry:
21*786a4f42SChuanqi Xu// CHECK-NEXT:  %call = call noundef{{.*}} i32 @_Z3foov()
22*786a4f42SChuanqi Xu// CHECK-NEXT:  store i32 %call, ptr @i
23*786a4f42SChuanqi Xu
24*786a4f42SChuanqi Xu//--- Use.cpp
25*786a4f42SChuanqi Xuimport "header.h";
26*786a4f42SChuanqi Xu
27*786a4f42SChuanqi Xu// CHECK: @i = {{.*}}global i32 0
28*786a4f42SChuanqi Xu// CHECK: void @__cxx_global_var_init()
29*786a4f42SChuanqi Xu// CHECK-NEXT: entry:
30*786a4f42SChuanqi Xu// CHECK-NEXT:  %call = call noundef{{.*}} i32 @_Z3foov()
31*786a4f42SChuanqi Xu// CHECK-NEXT:  store i32 %call, ptr @i
32