Good one, thanks. Note that it requires Clang; GCC 12.2 doesn't have it.
-fsanitize=address,leak,undefined,cfi,function
CFI has checks for unrelated casts and mismatched vtables which is very useful. It requires that you pass -flto or -flto=thin and -fvisibility=hidden.You can read a comparison with -fsanitize=function here:
https://clang.llvm.org/docs/ControlFlowIntegrity.html#fsanit...
There's also TypeSanitizer, which isn't officially released, but is really interesting and should be able to be applied via a patch from the branch:
https://www.youtube.com/watch?v=vAXJeN7k32Y
https://reviews.llvm.org/D32199
$ curl -L 'https://reviews.llvm.org/D32199?download=1' | patch -p1