summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExprAgg.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-04-29 19:26:57 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-04-29 19:26:57 +0000
commit419bd0941514bad6fa9d66e6f76360791389e7e0 (patch)
treeeac43af91c8b6458ab4dc6478c239e12534894fd /clang/lib/CodeGen/CGExprAgg.cpp
parentae7e4995ca2c506200f7673d9161df2d851582fb (diff)
downloadbcm5719-llvm-419bd0941514bad6fa9d66e6f76360791389e7e0.tar.gz
bcm5719-llvm-419bd0941514bad6fa9d66e6f76360791389e7e0.zip
PR23373: A defaulted union copy constructor that is not trivial must still be
emitted as a memcpy. llvm-svn: 236142
Diffstat (limited to 'clang/lib/CodeGen/CGExprAgg.cpp')
-rw-r--r--clang/lib/CodeGen/CGExprAgg.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp
index b139ef299ff..2ad5ec3994f 100644
--- a/clang/lib/CodeGen/CGExprAgg.cpp
+++ b/clang/lib/CodeGen/CGExprAgg.cpp
@@ -1415,7 +1415,8 @@ void CodeGenFunction::EmitAggregateCopy(llvm::Value *DestPtr,
assert((Record->hasTrivialCopyConstructor() ||
Record->hasTrivialCopyAssignment() ||
Record->hasTrivialMoveConstructor() ||
- Record->hasTrivialMoveAssignment()) &&
+ Record->hasTrivialMoveAssignment() ||
+ Record->isUnion()) &&
"Trying to aggregate-copy a type without a trivial copy/move "
"constructor or assignment operator");
// Ignore empty classes in C++.
OpenPOWER on IntegriCloud