isuckatcs added a comment. This patch got a little bit out of control at the last revision, so I decided to remove every change from clang and add everything to the `ExceptionAnalyzer` only. The reason for that is with exceptions we have less conversions to check than we have inside the compiler, which can lead to confusion.
For example: class A {}; class B : public A {}; int A::* pa; int B::* pb = pa; <-- valid outside of exception handler, invalid in exception handler We can have the conversion `int B::* pb = pa;` because of `7.3.12 Pointer-to-member conversions`, which is by standard not performed when an exception needs to be caught. See godbolt <https://godbolt.org/z/fj4Y4xfoM>. (MSVC does catch `A::*` with a `B::*` handler for some reason, maybe I miss some flag) For the above reason, sadly we can't test the changes the way you suggested @xazax.hun, like checking if the assigment compiles or not. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135495/new/ https://reviews.llvm.org/D135495 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits