OSDN Git Service

[GlobalsAA] Fix a really horrible iterator invalidation bug
authorJames Molloy <james.molloy@arm.com>
Mon, 19 Oct 2015 08:54:59 +0000 (08:54 +0000)
committerJames Molloy <james.molloy@arm.com>
Mon, 19 Oct 2015 08:54:59 +0000 (08:54 +0000)
commitf9cd1bee2f370b05a7b2e6b8f66ad75590ee6383
tree0811936ceba1a96117767c2947f0130062844ce1
parentda40167c025ff6e695a542940d48d6edea1ca1f8
[GlobalsAA] Fix a really horrible iterator invalidation bug

We were keeping a reference to an object in a DenseMap then mutating it. At the end of the function we were attempting to clone that reference into other keys in the DenseMap, but DenseMap may well decide to resize its hashtable which would invalidate the reference!

It took an extremely complex testcase to catch this - many thanks to Zhendong Su for catching it in PR25225.

This fixes PR25225.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250692 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/GlobalsModRef.cpp