diff options
| author | Kostya Serebryany <kcc@google.com> | 2014-11-11 23:38:13 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2014-11-11 23:38:13 +0000 |
| commit | 4133eabb45b6b78cebd17e43564071c8b93f8206 (patch) | |
| tree | 9cf65bfd2f6548a727036862b9b1106d4f5a90d3 /clang/lib/CodeGen | |
| parent | f53f07046b2cfcc92f66cc330a05ba6efd7a7f44 (diff) | |
| download | bcm5719-llvm-4133eabb45b6b78cebd17e43564071c8b93f8206.tar.gz bcm5719-llvm-4133eabb45b6b78cebd17e43564071c8b93f8206.zip | |
[clang/asan] Do not emit memcpy for trivial operator= when -fsanitize-address-field-padding >= 1
Summary: If we've added poisoned paddings to a type do not emit memcpy for operator=.
Test Plan: regression tests.
Reviewers: majnemer, rsmith
Reviewed By: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6160
llvm-svn: 221739
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGExprCXX.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExprCXX.cpp b/clang/lib/CodeGen/CGExprCXX.cpp index 3d1283f04b9..39c77eb8b6d 100644 --- a/clang/lib/CodeGen/CGExprCXX.cpp +++ b/clang/lib/CodeGen/CGExprCXX.cpp @@ -318,7 +318,7 @@ CodeGenFunction::EmitCXXOperatorMemberCallExpr(const CXXOperatorCallExpr *E, llvm::Value *This = LV.getAddress(); if ((MD->isCopyAssignmentOperator() || MD->isMoveAssignmentOperator()) && - MD->isTrivial()) { + MD->isTrivial() && !MD->getParent()->mayInsertExtraPadding()) { llvm::Value *Src = EmitLValue(E->getArg(1)).getAddress(); QualType Ty = E->getType(); EmitAggregateAssign(This, Src, Ty); |

