diff options
author | Vedant Kumar <vsk@apple.com> | 2017-02-17 20:59:40 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-02-17 20:59:40 +0000 |
commit | b1eb45cd6d2491bd10c1cff34a56463f2c6bf6cd (patch) | |
tree | 0c79c14b87beaad175003d428a536bc48de064b5 /lib/CodeGen/CGExprCXX.cpp | |
parent | 0348cfe40e6ee913e81b65e2d353db5f6d66281d (diff) |
Revert "Retry: [ubsan] Reduce null checking of C++ object pointers (PR27581)"
This reverts commit r295401. It breaks the ubsan self-host. It inserts
object size checks once per C++ method which fire when the structure is
empty.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295494 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGExprCXX.cpp')
-rw-r--r-- | lib/CodeGen/CGExprCXX.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/lib/CodeGen/CGExprCXX.cpp b/lib/CodeGen/CGExprCXX.cpp index 1c6a577a95..ebe0841b3c 100644 --- a/lib/CodeGen/CGExprCXX.cpp +++ b/lib/CodeGen/CGExprCXX.cpp @@ -290,15 +290,10 @@ RValue CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr( if (CE) CallLoc = CE->getExprLoc(); - bool SkipNullCheck = false; - if (const auto *CMCE = dyn_cast<CXXMemberCallExpr>(CE)) - SkipNullCheck = - CanElideObjectPointerNullCheck(CMCE->getImplicitObjectArgument()); - EmitTypeCheck( - isa<CXXConstructorDecl>(CalleeDecl) ? CodeGenFunction::TCK_ConstructorCall - : CodeGenFunction::TCK_MemberCall, - CallLoc, This.getPointer(), C.getRecordType(CalleeDecl->getParent()), - /*Alignment=*/CharUnits::Zero(), SkipNullCheck); + EmitTypeCheck(isa<CXXConstructorDecl>(CalleeDecl) + ? CodeGenFunction::TCK_ConstructorCall + : CodeGenFunction::TCK_MemberCall, + CallLoc, This.getPointer(), C.getRecordType(CalleeDecl->getParent())); // FIXME: Uses of 'MD' past this point need to be audited. We may need to use // 'CalleeDecl' instead. |