[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