]> granicus.if.org Git - llvm/commit
Don't use invalidated iterators in FlattenCFGPass
authorJakub Kuderski <kubakuderski@gmail.com>
Thu, 19 Sep 2019 19:39:42 +0000 (19:39 +0000)
committerJakub Kuderski <kubakuderski@gmail.com>
Thu, 19 Sep 2019 19:39:42 +0000 (19:39 +0000)
commita9cd579599505f4547ef5371e43a1ef41351b734
treeb6b77ce781bad853ff046b139e4a4d340b76260d
parentfffd837fe1dd338825e4d741fd98a9f895ea39a3
Don't use invalidated iterators in FlattenCFGPass

Summary:
FlattenCFG may erase unnecessary blocks, which also invalidates iterators to those erased blocks.
Before this patch, `iterativelyFlattenCFG` could try to increment a BB iterator after that BB has been removed and crash.

This patch makes FlattenCFGPass use `WeakVH` to skip over erased blocks.

Reviewers: dblaikie, tstellar, davide, sanjoy, asbirlea, grosser

Reviewed By: asbirlea

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67672

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372347 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/FlattenCFGPass.cpp
test/Transforms/Util/flattencfg.ll