zmodem wrote: Sorry for the repeated questions, but I'd really like to understand this better :)
In https://github.com/llvm/llvm-project/pull/172287 @efriedma-quic said > The basic issue here is that you can't generate unwind tables for both SEH > and C++ exception handling in the same function. That makes sense to me. In our case, we are (as far as I'm aware) building with C++ exceptions disabled, so that issue should not apply to us? That's why I don't understand why this PR gates the `err_seh_object_unwinding` diagnostic behind `getLangOpts().EHAsynch`. If the problem is mixing SEH and C++ exceptions, why not gate it behind `getLangOpts().CXXExceptions`? > SEH is important for Windows, it can prevent many EXCEPTION_IN_PAGE_ERROR > errors. __For LLVM, it only works when using /EHa__ My understanding was that LLVM has had SEH support for a long time, but only for synchronous SEH exceptions. I.e. the following should work: ``` __try { foo(); // Bad memory access in here. } __except(EXCEPTION_IN_PAGE_ERROR) { // ... } ``` even without `/EHa` (as long as foo is not inlined)? > This issue(#62606) can probably answer most questions. The key point is that > the handling of SEH in LLVM is not quite the same as in MSVC. Currently, it > can be said that with LLVM, the code within the __except block is only > explicitly generated when using /eha. IIUC that issue is about async SEH. We don't build with `/EHa`, but my understanding was that synchronous SEH should still work? https://github.com/llvm/llvm-project/pull/180108 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
