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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits