diff options
author | Vedant Kumar <vsk@apple.com> | 2020-09-25 13:09:47 -0700 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2020-09-28 09:41:18 -0700 |
commit | 06bc685fa2400cc28282ab6dd3c917d45bfa662f (patch) | |
tree | 3d812a33a02b29ca3f5d6245eb262895c283ec9d /clang/lib/CodeGen/CGCall.cpp | |
parent | b5f7e9e26cd06d034bf68f63de6ae6d37b032b5e (diff) | |
download | llvm-06bc685fa2400cc28282ab6dd3c917d45bfa662f.zip llvm-06bc685fa2400cc28282ab6dd3c917d45bfa662f.tar.gz llvm-06bc685fa2400cc28282ab6dd3c917d45bfa662f.tar.bz2 |
[ubsan] nullability-arg: Fix crash on C++ member pointers
Extend -fsanitize=nullability-arg to handle call sites which accept C++
member pointers.
rdar://62476022
Differential Revision: https://reviews.llvm.org/D88336
Diffstat (limited to 'clang/lib/CodeGen/CGCall.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index 9ccbe87..dd3f856 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -3785,10 +3785,7 @@ void CodeGenFunction::EmitNonNullArgCheck(RValue RV, QualType ArgType, } SanitizerScope SanScope(this); - assert(RV.isScalar()); - llvm::Value *V = RV.getScalarVal(); - llvm::Value *Cond = - Builder.CreateICmpNE(V, llvm::Constant::getNullValue(V->getType())); + llvm::Value *Cond = EmitNonNullRValueCheck(RV, ArgType); llvm::Constant *StaticData[] = { EmitCheckSourceLocation(ArgLoc), EmitCheckSourceLocation(AttrLoc), llvm::ConstantInt::get(Int32Ty, ArgNo + 1), |