[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / pr58716.cppm
blobcd3db2c19f48264bd48094a3274ee1de7374d5e9
1 // Tests that the compiler won't crash due to the consteval constructor.
2 //
3 // REQUIRES: x86-registered-target
4 //
5 // RUN: rm -rf %t
6 // RUN: mkdir -p %t
7 // RUN: split-file %s %t
8 //
9 // RUN: %clang_cc1 -triple=x86_64-linux-gnu -std=c++20 -emit-module-interface %t/m.cppm -o %t/m.pcm
10 // RUN: %clang_cc1 -triple=x86_64-linux-gnu -std=c++20 %t/m.pcm -emit-llvm -o - | FileCheck %t/m.cppm
12 //--- m.cppm
13 module;
14 #include "fail.h"
15 export module mymodule;
17 // CHECK: @.str = {{.*}}"{}\00"
18 // CHECK: store{{.*}}ptr @.str
20 //--- fail.h
21 namespace std { 
23 template<class _CharT>
24 class basic_string_view {
25 public:
26     constexpr basic_string_view(const _CharT* __s)
27         : __data_(__s) {}
29 private:
30     const   _CharT* __data_;
33 template <class _CharT>
34 struct basic_format_string {
35   template <class _Tp>
36   consteval basic_format_string(const _Tp& __str) : __str_{__str} {
37   }
39 private:
40   basic_string_view<_CharT> __str_;
44 auto this_fails() -> void {
45     std::basic_format_string<char> __fmt("{}");