diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-08-04 12:34:30 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-08-04 12:34:30 +0000 |
commit | 6c3e4ec4492c03f2e9fece9c4947928cb07ed0dc (patch) | |
tree | bdc8f8b20d07d9cbb941118b9d1680a79dde012b /clang/lib/CodeGen/CGCleanup.cpp | |
parent | 2ab0d88b9120c89aaf5c99dfc3779e276443774a (diff) | |
download | bcm5719-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/CGCleanup.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGCleanup.cpp | 11 |
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()) |