================
@@ -14,7 +14,7 @@ struct A { int a; A(int a) : a(a) {} virtual ~A(); };
 // PartialTranslationUnit.
 inline A::~A() { printf("~A(%d)\n", a); }
 
-// Create one instance with new and delete it.
+// Create one instance with new and delete it. We crash here now:
 A *a1 = new A(1);
----------------
weliveindetail wrote:

> Do we even have initial PTUs in the default case?

Well, this test passes, if I comment out the for loop in the ctor that executes 
initial PTUs:
https://github.com/llvm/llvm-project/pull/84758/files#diff-b8484f1fc5b057f146ed5d9b6e2cd47c3f6f5ae879c7a0eee44f0a272581a88cR250-R254

> Also the minimal reproducer shows a more general version where the virtual 
> destructor is actually defined inline 
> (https://github.com/llvm/llvm-project/commit/c861d32d7c2791bdc058d9d9fbaecc1c2f07b8c7
>  addresses the case where it is out-of-line, which is special due to key 
> virtual functions).

Oh that's a good note, I had not considered the difference yet and actually 
they have different backtraces. Eventually, they both reach the same VTablePtr 
code though.

> I could not see the stack trace on osx. Can you paste it here?

Here is a diff (inline left, out-of-line right):
<img width="2081" alt="Screenshot 2024-03-12 at 11 12 36" 
src="https://github.com/llvm/llvm-project/assets/7307454/41b64f92-83ea-4f82-b983-0b05e32ace42";>

> So if that breaks entirely (which is critical for us), I'm personally not ok 
> with just `XFAIL`ing it to land another change...

What breaks here is the parser and this patch doesn't even touch it. Not sure I 
am missing something, but it seems that it triggers a bug that always existed 
and just didn't show up so far.

https://github.com/llvm/llvm-project/pull/84758
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to