diff clang/test/Modules/pr58716.cppm @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clang/test/Modules/pr58716.cppm	Fri Aug 18 09:04:13 2023 +0900
@@ -0,0 +1,46 @@
+// Tests that the compiler won't crash due to the consteval constructor.
+//
+// REQUIRES: x86-registered-target
+//
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -triple=x86_64-linux-gnu -std=c++20 -emit-module-interface %t/m.cppm -o %t/m.pcm
+// RUN: %clang_cc1 -triple=x86_64-linux-gnu -std=c++20 %t/m.pcm -S -emit-llvm -o - | FileCheck %t/m.cppm
+//
+//--- m.cppm
+module;
+#include "fail.h"
+export module mymodule;
+
+// CHECK: @.str = {{.*}}"{}\00"
+// CHECK: store{{.*}}ptr @.str
+
+//--- fail.h
+namespace std { 
+
+template<class _CharT>
+class basic_string_view {
+public:
+    constexpr basic_string_view(const _CharT* __s)
+        : __data_(__s) {}
+
+private:
+    const   _CharT* __data_;
+};
+
+template <class _CharT>
+struct basic_format_string {
+  template <class _Tp>
+  consteval basic_format_string(const _Tp& __str) : __str_{__str} {
+  }
+
+private:
+  basic_string_view<_CharT> __str_;
+};
+}
+
+auto this_fails() -> void {
+    std::basic_format_string<char> __fmt("{}");
+}