diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-18 18:15:39 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-18 18:15:39 +0000 |
commit | 32f59d8e1eaf89774efa65fa03c75e9f5bcd7f13 (patch) | |
tree | 1a0e229ada46580d3cc89406196ed14a74826d87 /clang/lib/CodeGen | |
parent | 6c12414358031407667b75657b9d768080f16409 (diff) | |
download | bcm5719-llvm-32f59d8e1eaf89774efa65fa03c75e9f5bcd7f13.tar.gz bcm5719-llvm-32f59d8e1eaf89774efa65fa03c75e9f5bcd7f13.zip |
[UBsan] Skip -fsanitize=vptr instrumentations when the pointer value is null.
Otherwise -fsanitize=vptr causes the program to crash when it downcasts
a null pointer.
Reviewed in http://reviews.llvm.org/D4412.
Patch by Byoungyoung Lee!
llvm-svn: 213393
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index b08af949b4b..512b323ba10 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -463,7 +463,7 @@ void CodeGenFunction::EmitTypeCheck(TypeCheckKind TCK, SourceLocation Loc, llvm::Value *Cond = nullptr; llvm::BasicBlock *Done = nullptr; - if (SanOpts->Null) { + if (SanOpts->Null || TCK == TCK_DowncastPointer) { // The glvalue must not be an empty glvalue. Cond = Builder.CreateICmpNE( Address, llvm::Constant::getNullValue(Address->getType())); |