diff options
author | Naomi Musgrave <nmusgrave@google.com> | 2015-09-16 23:46:40 +0000 |
---|---|---|
committer | Naomi Musgrave <nmusgrave@google.com> | 2015-09-16 23:46:40 +0000 |
commit | f90c1be78cc4efd3d3b06bfc3dea641ee53258e6 (patch) | |
tree | 4e6e15e4da989248fd10ced054dc53c5eec98705 /llvm/lib/Analysis/ScalarEvolution.cpp | |
parent | eb8b4bc473164c692c21e9c6a141a24683186edf (diff) | |
download | bcm5719-llvm-f90c1be78cc4efd3d3b06bfc3dea641ee53258e6.tar.gz bcm5719-llvm-f90c1be78cc4efd3d3b06bfc3dea641ee53258e6.zip |
ScalarEvolution: added tmp to avoid use-after-dtor in for loop.
Summary:
For loop destroyed current instance before invoking next.
Temporary variable added to prevent use-after-dtor when invoke
destructor on current instance.
Reviewers: eugenis
Subscribers: llvm-commits, sanjoy
Differential Revision: http://reviews.llvm.org/D12912
Rename temp var.
llvm-svn: 247867
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index d8d94c422d2..3bdbee3e52c 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -8394,8 +8394,11 @@ ScalarEvolution::ScalarEvolution(ScalarEvolution &&Arg) ScalarEvolution::~ScalarEvolution() { // Iterate through all the SCEVUnknown instances and call their // destructors, so that they release their references to their values. - for (SCEVUnknown *U = FirstUnknown; U; U = U->Next) - U->~SCEVUnknown(); + for (SCEVUnknown *U = FirstUnknown; U;) { + SCEVUnknown *Tmp = U; + U = U->Next; + Tmp->~SCEVUnknown(); + } FirstUnknown = nullptr; ValueExprMap.clear(); |