Quuxplusone added a comment.

> Well, I'm saying two things. First, it is not clear to me what the expected 
> behavior of that code is under the standard. The fact that it appears to work 
> in one particular implementation is not in any way conclusive; we have to 
> look at the specification.

Aha, I had thought it worked on "both Clang and GCC," but now I see that 
Godbolt uses libsupc++ for both Clang and GCC (and that's where the issue is). 
Switching to a branch that uses libc++abi, I see that libc++abi just calls 
`std::terminate` in this situation: https://godbolt.org/z/4s8aMvr3K

> Second, I think it only appears to work: looking at the runtime code in both 
> libc++abi and libsupc++, it leaks the memory of the exception object, which 
> it's clearly not allowed to do. You should be able to fairly easy prove that 
> by looking at heap usage if you do it in a loop.

Yep, memory leak confirmed. (Via the same Godbolt: 
https://godbolt.org/z/4s8aMvr3K )  So okay, never mind me.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108905/new/

https://reviews.llvm.org/D108905

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to