OSDN Git Service

Teach the new SROA to handle cases where an alloca that has already been
authorChandler Carruth <chandlerc@gmail.com>
Tue, 2 Oct 2012 22:46:45 +0000 (22:46 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 2 Oct 2012 22:46:45 +0000 (22:46 +0000)
commit5c5b3cf5b8af06b8e9347f3f45e8c67438ffd446
tree8d0f5ecadba9f4350cceb812320fd71d8ddb0971
parent5d37976090df34f003e5128e39593b763be0ca71
Teach the new SROA to handle cases where an alloca that has already been
scheduled for processing on the worklist eventually gets deleted while
we are processing another alloca, fixing the original test case in
PR13990.

To facilitate this, add a remove_if helper to the SetVector abstraction.
It's not easy to use the standard abstractions for this because of the
specifics of SetVectors types and implementation.

Finally, a nice small test case is included. Thanks to Benjamin for the
fantastic reduced test case here! All I had to do was delete some empty
basic blocks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165065 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/SetVector.h
lib/Transforms/Scalar/SROA.cpp
test/Transforms/SROA/basictest.ll