AliasSetTracker: UnknownInsts should contribute to the refcount
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 19 Nov 2014 09:41:05 +0000 (09:41 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 19 Nov 2014 09:41:05 +0000 (09:41 +0000)
commitf47d325eec1cea83922c54a01811d136bb1b827a
tree868fd2739682914c82096272a9e125536379ecb8
parentc58082616af5428b00ab986342686202540568ae
AliasSetTracker: UnknownInsts should contribute to the refcount

AliasSetTracker::addUnknown may create an AliasSet devoid of pointers
just to contain an instruction if no suitable AliasSet already exists.
It will then AliasSet::addUnknownInst and we will be done.

However, it's possible for addUnknown to choose an existing AliasSet to
addUnknownInst.
If this were to occur, we are in a bit of a pickle: removing pointers
from the AliasSet can cause the entire AliasSet to become destroyed,
taking our unknown instructions out with them.

Instead, keep track whether or not our AliasSet has any unknown
instructions.

This fixes PR21582.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222338 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/AliasSetTracker.h
lib/Analysis/AliasSetTracker.cpp
test/Transforms/LICM/PR21582.ll [new file with mode: 0644]