aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LowerSwitch.cpp
diff options
context:
space:
mode:
authorBjorn Pettersson <bjorn.a.pettersson@ericsson.com>2018-05-22 08:33:02 +0000
committerBjorn Pettersson <bjorn.a.pettersson@ericsson.com>2018-05-22 08:33:02 +0000
commitfecef6be9ef257198e42f8acb4cf5d7051ba5f0a (patch)
tree3838f36b38138ec6e12daf07293a3da193049bb0 /llvm/lib/Transforms/Utils/LowerSwitch.cpp
parent844663353d34c43e99d920042820a8a33f5ab1de (diff)
downloadllvm-fecef6be9ef257198e42f8acb4cf5d7051ba5f0a.zip
llvm-fecef6be9ef257198e42f8acb4cf5d7051ba5f0a.tar.gz
llvm-fecef6be9ef257198e42f8acb4cf5d7051ba5f0a.tar.bz2
[LoopVersioning] Don't modify the list that we iterate over in addPHINodes
Summary: In LoopVersioning::addPHINodes we need to iterate over all users for a value "Inst", and if the user is outside of the VersionedLoop we should replace the use of "Inst" by using the value "PN" instead. Replacing the use of "Inst" for a user of "Inst" also means that Inst->users() is modified. So it is not safe to do the replace while iterating over Inst->users() as we used to do. This patch splits the task into two steps. First we iterate over Inst->users() to find all users that should be updated. Those users are saved into a local data structure on the stack. And then, in the second step, we do the actual updates. This time iterating over the local data structure. Reviewers: mzolotukhin, anemet Reviewed By: mzolotukhin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D47134 llvm-svn: 332958
Diffstat (limited to 'llvm/lib/Transforms/Utils/LowerSwitch.cpp')
0 files changed, 0 insertions, 0 deletions