eugenis added inline comments. ================ Comment at: lib/CodeGen/CGCXX.cpp:42-44 @@ -33,1 +41,5 @@ bool CodeGenModule::TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D) { + // If sanitizing memory to check for use-after-dtor, do not emit as + // an alias, unless it has no fields or has only fields with non-trivial + // destructors. + if (getCodeGenOpts().SanitizeMemoryUseAfterDtor && ---------------- rsmith wrote: > I assume the rationale here is that the field and base class destructors will > mark their storage as destroyed, so there's nothing else to mark? This may > mean that vptrs and padding bytes don't get marked as destroyed, is that OK? Yes, each (sub-)object poisons its storage in the base destructor, and only does it for fields that don't have their own destructors to avoid double-poisoning.
Poisoning vptr would be interesting. Yes, current implementation fails to do this. Padding - less so, but it would make the tool a little bit more predictable. http://reviews.llvm.org/D12022 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits