[clang] [clang] mangle placeholder for deduced type as a template-prefix (PR #106335)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 28 09:36:36 PDT 2024


================
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s
+
+template <template <class> class S>
+void create_unique()
+  requires (S{0}, true) {}
+
+template <class Fn> struct A {
+  constexpr A(Fn) {};
+};
+
+template void create_unique<A>();
+// CHECK: @_Z13create_uniqueI1AEvvQcmtlT_Li0EELb1E(
----------------
AaronBallman wrote:

> @AaronBallman to clarify the status quo is that this crashes in 19. (and did not crash in 18)

Yup, I knew it was a regression (boo!); if we fixed it a few weeks ago, I think it'd be an easier sell for backporting. My concern is we don't have enough bake time for 19.0.1, and once that goes out we no longer take ABI breaking changes for subsequent releases of 19.x.

> Lastly, keeping the previous behavior under a different ABI flag seems problematic, as we would be also tying these bugs to the flag.

That's the usual point to the flag; we start doing the right thing by default, but we leave an escape hatch for people relying on the previous ABI (despite the bugs) because we don't know who is relying on the old behavior.

https://github.com/llvm/llvm-project/pull/106335


More information about the cfe-commits mailing list