1 // RUN: %clang_cc1 -fmodules -std=c++17 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
3 #pragma clang module build A
5 #pragma clang module contents
6 #pragma clang module begin A
7 template<typename T
> T
f(T v
) {
13 return f([=] { return n
; });
16 template<typename T
> constexpr T
f2(T v
) {
22 return f2([=] { return n
; });
24 #pragma clang module end
25 #pragma clang module endbuild
27 #pragma clang module build B
29 #pragma clang module contents
30 #pragma clang module begin B
31 template<typename T
> T
f(T v
) {
37 return f([=] { return n
; });
40 template<typename T
> constexpr T
f2(T v
) {
46 return f2([=] { return n
; });
48 #pragma clang module end
49 #pragma clang module endbuild
51 #pragma clang module import A
52 #pragma clang module import B
54 // CHECK: define {{.*}}use_g
59 static_assert(g2()() == 0);