summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2014-11-11 23:38:13 +0000
committerKostya Serebryany <kcc@google.com>2014-11-11 23:38:13 +0000
commit4133eabb45b6b78cebd17e43564071c8b93f8206 (patch)
tree9cf65bfd2f6548a727036862b9b1106d4f5a90d3 /clang/lib/CodeGen
parentf53f07046b2cfcc92f66cc330a05ba6efd7a7f44 (diff)
downloadbcm5719-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.cpp2
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);
OpenPOWER on IntegriCloud