[PATCH] D101103: [InstSimplify] Treat invariant group insts as bitcasts for load operands
Arthur Eubanks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 27 17:51:34 PDT 2021
aeubanks added a comment.
looks like the strip is coming from `CodeGenFunction::EmitLValueForField()`:
if (auto *ClassDef = dyn_cast<CXXRecordDecl>(rec)) {
if (CGM.getCodeGenOpts().StrictVTablePointers &&
ClassDef->isDynamicClass()) {
// Getting to any field of dynamic object requires stripping dynamic
// information provided by invariant.group. This is because accessing
// fields may leak the real address of dynamic object, which could result
// in miscompilation when leaked pointer would be compared.
auto *stripped = Builder.CreateStripInvariantGroup(addr.getPointer());
addr = Address(stripped, addr.getAlignment());
}
}
is this actually true?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101103/new/
https://reviews.llvm.org/D101103
More information about the llvm-commits
mailing list