diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2015-09-09 00:01:31 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-09-09 00:01:31 +0000 |
commit | ee381ffba4a1797a38115217c1540b5c3b8ea4e7 (patch) | |
tree | 5e485b22f6e7add56797ca35dcdb13967d1fdb12 /clang/lib/CodeGen/CGExpr.cpp | |
parent | 84df12375cdec370fd09a99e3de2e788351ff403 (diff) | |
download | bcm5719-llvm-ee381ffba4a1797a38115217c1540b5c3b8ea4e7.tar.gz bcm5719-llvm-ee381ffba4a1797a38115217c1540b5c3b8ea4e7.zip |
CodeGen: Add CFI unrelated cast checks to the new pointer code path.
llvm-svn: 247105
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index b7d1ef19b15..8339444c20e 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -820,6 +820,14 @@ Address CodeGenFunction::EmitPointerWithAlignment(const Expr *E, getNaturalPointeeTypeAlignment(E->getType(), Source)); } + if (SanOpts.has(SanitizerKind::CFIUnrelatedCast)) { + if (auto PT = E->getType()->getAs<PointerType>()) + EmitVTablePtrCheckForCast(PT->getPointeeType(), Addr.getPointer(), + /*MayBeNull=*/true, + CodeGenFunction::CFITCK_UnrelatedCast, + CE->getLocStart()); + } + return Builder.CreateBitCast(Addr, ConvertType(E->getType())); } break; |