[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / cxx20-no-check-input.cppm
blobf4b42b444f2e486697a1fa079c8af4cc7eeeb2e2
1 // RUN: rm -rf %t
2 // RUN: split-file %s %t
3 // RUN: cd %t
4 //
5 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
6 // RUN:     %t/a.cppm -emit-module-interface -o %t/a.pcm
7 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
8 // RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
9 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
10 // RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
12 // RUN: echo "//Update" >> %t/foo.h
13 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
14 // RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
15 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
16 // RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
18 // RUN: echo "//Update" >> %t/a.cppm
19 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
20 // RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
21 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
22 // RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
24 // RUN: rm -f %t/foo.h
25 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
26 // RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
27 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
28 // RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
30 // RUN: rm -f %t/a.cppm
31 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
32 // RUN:     %t/use.cpp -fmodule-file=a=%t/a.pcm -verify -fsyntax-only
33 // RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple \
34 // RUN:     %t/a.pcm -emit-llvm -o - | FileCheck %t/a.ll
36 //--- foo.h
37 inline int foo = 43;
39 //--- a.cppm
40 // expected-no-diagnostics
41 module;
42 #include "foo.h"
43 export module a;
44 export using ::foo;
46 //--- a.ll
47 // check the LLVM IR are generated succesfully.
48 // CHECK: define{{.*}}@_ZGIW1a
50 //--- use.cpp
51 // expected-no-diagnostics
52 import a;
53 int use() {
54     return foo;