Fix a nasty dangling-pointer heisenbug that could
authorDale Johannesen <dalej@apple.com>
Wed, 31 Mar 2010 20:37:15 +0000 (20:37 +0000)
committerDale Johannesen <dalej@apple.com>
Wed, 31 Mar 2010 20:37:15 +0000 (20:37 +0000)
commit536d31b5b391ee76eae33f4756f6442bf10b2d72
treea3fbc68585aa83d994c910f4bc0e79d7da9dfa64
parent4e86da71b325e71d86b39fe3a63109d1fbad5739
Fix a nasty dangling-pointer heisenbug that could
generate wrong code pretty much anywhere AFAICT.
A case that hits the bug reproducibly is impossible,
but the situation was like this:
Addr = ...
Store -> Addr
Addr2 = GEP , 0, 0
Store -> Addr2
Handling the first store, the code changed replaced Addr
with a sunkaddr and deleted Addr, but not its table
entry.  Code in OptimizedBlock replaced Addr2 with a
bitcast; if that happened to reuse the memory of Addr,
the old table entry was erroneously found when handling
the second store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100044 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/CodeGenPrepare.cpp