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

Reply via email to