diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-04-29 19:26:57 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-04-29 19:26:57 +0000 |
| commit | 419bd0941514bad6fa9d66e6f76360791389e7e0 (patch) | |
| tree | eac43af91c8b6458ab4dc6478c239e12534894fd /clang/lib/CodeGen/CGExprAgg.cpp | |
| parent | ae7e4995ca2c506200f7673d9161df2d851582fb (diff) | |
| download | bcm5719-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.cpp | 3 |
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++. |

