Simplify the PHI node operand rewriting.
authorChandler Carruth <chandlerc@gmail.com>
Thu, 24 Jan 2013 10:40:51 +0000 (10:40 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 24 Jan 2013 10:40:51 +0000 (10:40 +0000)
commit76aacbd8749f51c9fedae4a76b0ae4ec2c789f38
tree6ee5f1300108afdd76893737156024e28be539df
parent35fb1167b07a3974b0b16258b9391cbeea50aa8d
Simplify the PHI node operand rewriting.

Previously, the code would scan the PHI nodes and build up a small
setvector of candidate value pairs in phi nodes to go and rewrite. Once
certain the rewrite could be performed, the code walks the set, and for
each one re-scans the entire PHI node list looking for nodes to rewrite
operands.

Instead, scan the PHI nodes once to check for hazards, and then scan it
a second time to rewrite the operands to selects. No set vector, and
a max of two scans.

The only downside is that we might form identical selects, but
instcombine or anything else should fold those easily, and it seems
unlikely to happen often.

llvm-svn: 173337
llvm/lib/Transforms/Utils/SimplifyCFG.cpp