Fix PR12858, a crash due to GVN's PRE not fully removing an instruction from the
authorDuncan Sands <baldrick@free.fr>
Tue, 22 May 2012 14:17:53 +0000 (14:17 +0000)
committerDuncan Sands <baldrick@free.fr>
Tue, 22 May 2012 14:17:53 +0000 (14:17 +0000)
commit4df5e96d3a44c38d9cea4ca3438e378b3e97c429
tree141095790ba2f612b8703cfc98f04cfcce2d708a
parent5d03d456431ca294ac9ccc878a1dd78c54c90fbc
Fix PR12858, a crash due to GVN's PRE not fully removing an instruction from the
leader table.  That's because it wasn't expecting instructions to turn up as
leader for a value number that is not its own, but equality propagation could
create this situation.  One solution is to have the leader table use a WeakVH
but this slows down GVN by about 5%.  Instead just have equality propagation not
add instructions to the leader table, only constants and arguments.  In theory
this might cause GVN to run more (each time it changes something it runs again)
but it doesn't seem to occur enough to cause a slow down.

llvm-svn: 157251
llvm/lib/Transforms/Scalar/GVN.cpp
llvm/test/Transforms/GVN/2012-05-22-PreCrash.ll [new file with mode: 0644]