diff options
author | Oliver Hunt <oliver@apple.com> | 2025-08-06 09:52:34 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-06 09:52:34 -0700 |
commit | c548c47476ee3f4578db2ca4f82e097a728b5bff (patch) | |
tree | 40dbc05ee84220a3c8ca9bcb59592127efa6b3ea /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 01b0fe3104d633d67d33a963142a54cd500e6b3c (diff) | |
download | llvm-c548c47476ee3f4578db2ca4f82e097a728b5bff.zip llvm-c548c47476ee3f4578db2ca4f82e097a728b5bff.tar.gz llvm-c548c47476ee3f4578db2ca4f82e097a728b5bff.tar.bz2 |
[clang] Fix crash in dynamic_cast final class optimization (#152076)
This corrects the codegen for the final class optimization to
correct handle the case where there is no path to perform the
cast, and also corrects the codegen to handle ptrauth protected
vtable pointers.
As part of this fix we separate out the path computation as
that makes it easier to reason about the failure code paths
and more importantly means we can know what the type of the
this object is during the cast.
The allows us to use the GetVTablePointer interface which
correctly performs the authentication operations required when
pointer authentication is enabled. This still leaves incorrect
authentication behavior in the multiple inheritance case but
currently the optimization is disabled entirely if pointer
authentication is enabled.
Fixes #137518
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions