eugenis added inline comments. ================ Comment at: lib/CodeGen/CGCXX.cpp:45 @@ +44,3 @@ + // destructors. + if (getCodeGenOpts().SanitizeMemoryUseAfterDtor) + return true; ---------------- This simply suppresses all dtor alias under UseAfterDtor, effectively disabling the second check below. Remove it.
================ Comment at: lib/CodeGen/CGCXX.cpp:130 @@ -115,3 +129,3 @@ bool InEveryTU) { - if (!getCodeGenOpts().CXXCtorDtorAliases) + if(!getCodeGenOpts().CXXCtorDtorAliases) return true; ---------------- formatting ================ Comment at: lib/CodeGen/CGCXX.cpp:147 @@ +146,3 @@ + // If sanitizing memory to check for use-after-dtor, do not emit as + // an alias, unless this class owns no members. + const CXXMethodDecl *MD = ---------------- ... with trivial destructors ================ Comment at: lib/CodeGen/CGClass.cpp:1547 @@ +1546,3 @@ + // Nothing to poison. + if (Layout.getFieldCount() == 0) + return; ---------------- Probably better check Dtor->getParent()->field_empty() for consistency. ================ Comment at: lib/CodeGen/CGClass.cpp:1551 @@ +1550,3 @@ + // Prevent the current stack frame from disappearing from the stack trace. + CGF.CurFn->addFnAttr("disable-tail-calls", "true"); + ---------------- disable tail calls only when !field_empty() http://reviews.llvm.org/D12022 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits