From: Naomi Musgrave Date: Wed, 16 Sep 2015 23:46:40 +0000 (+0000) Subject: ScalarEvolution: added tmp to avoid use-after-dtor in for loop. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c6b5fe6ee79a852a4c112a50528961f93fa02aec;p=oota-llvm.git 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247867 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index d8d94c422d2..3bdbee3e52c 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/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();