summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-08-04 12:34:30 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-08-04 12:34:30 +0000
commit6c3e4ec4492c03f2e9fece9c4947928cb07ed0dc (patch)
treebdc8f8b20d07d9cbb941118b9d1680a79dde012b /clang/lib/CodeGen
parent2ab0d88b9120c89aaf5c99dfc3779e276443774a (diff)
downloadbcm5719-llvm-6c3e4ec4492c03f2e9fece9c4947928cb07ed0dc.tar.gz
bcm5719-llvm-6c3e4ec4492c03f2e9fece9c4947928cb07ed0dc.zip
[CodeGen] Don't write into a SmallVector's uninitialized memory.
That's just ugly and not needed in this case. No functionality change. llvm-svn: 243973
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGCleanup.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGCleanup.cpp b/clang/lib/CodeGen/CGCleanup.cpp
index ef5a98ead98..5666a689af7 100644
--- a/clang/lib/CodeGen/CGCleanup.cpp
+++ b/clang/lib/CodeGen/CGCleanup.cpp
@@ -685,13 +685,10 @@ void CodeGenFunction::PopCleanupBlock(bool FallthroughIsBranchThrough) {
// Copy the cleanup emission data out. Note that SmallVector
// guarantees maximal alignment for its buffer regardless of its
// type parameter.
- SmallVector<char, 8*sizeof(void*)> CleanupBuffer;
- CleanupBuffer.reserve(Scope.getCleanupSize());
- memcpy(CleanupBuffer.data(),
- Scope.getCleanupBuffer(), Scope.getCleanupSize());
- CleanupBuffer.set_size(Scope.getCleanupSize());
- EHScopeStack::Cleanup *Fn =
- reinterpret_cast<EHScopeStack::Cleanup*>(CleanupBuffer.data());
+ auto *CleanupSource = reinterpret_cast<char *>(Scope.getCleanupBuffer());
+ SmallVector<char, 8 * sizeof(void *)> CleanupBuffer(
+ CleanupSource, CleanupSource + Scope.getCleanupSize());
+ auto *Fn = reinterpret_cast<EHScopeStack::Cleanup *>(CleanupBuffer.data());
EHScopeStack::Cleanup::Flags cleanupFlags;
if (Scope.isNormalCleanup())
OpenPOWER on IntegriCloud