[clang] [Sema] Instantiate destructors for initialized anonymous union fields (PR #128866)

Maurice Heumann via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 4 23:27:01 PST 2025


================
@@ -0,0 +1,48 @@
+// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
+
+namespace t1{
+template <class T> struct VSX {
+  ~VSX() { static_assert(sizeof(T) != 4, ""); } // expected-error {{static assertion failed due to requirement 'sizeof(int) != 4':}} \
+                                                // expected-note {{expression evaluates to '4 != 4'}}
+};
+struct VS {
+  union {
+    VSX<int> _Tail;
+  };
+  ~VS() { }
+  VS(short);
+};
+VS::VS(short) : _Tail() { } // expected-note {{in instantiation of member function 't1::VSX<int>::~VSX' requested here}}
----------------
momo5502 wrote:

I added a delegating constructor to the test. As the delegating constructor invokes the one that triggers the assertion, the assertion has to come either way. Therefore, I assume the test should assert that the note does not appear at the delegating constructor.

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


More information about the cfe-commits mailing list