[llvm] r247867 - ScalarEvolution: added tmp to avoid use-after-dtor in for loop.
Naomi Musgrave via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 16 16:46:40 PDT 2015
Author: nmusgrave
Date: Wed Sep 16 18:46:40 2015
New Revision: 247867
URL: http://llvm.org/viewvc/llvm-project?rev=247867&view=rev
Log:
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.
Modified:
llvm/trunk/lib/Analysis/ScalarEvolution.cpp
Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=247867&r1=247866&r2=247867&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original)
+++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Wed Sep 16 18:46:40 2015
@@ -8394,8 +8394,11 @@ ScalarEvolution::ScalarEvolution(ScalarE
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();
More information about the llvm-commits
mailing list