mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 14:46:53 +00:00
Handle constants in phi nodes properly. This fixes test/Transforms/GVNPRE/2007-06-18-ConstantInPhi.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37655 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
20c2b35c2f
commit
d0954105f0
@ -927,7 +927,16 @@ bool GVNPRE::runOnFunction(Function &F) {
|
|||||||
|
|
||||||
for (std::set<Value*>::iterator I = S.begin(), E = S.end();
|
for (std::set<Value*>::iterator I = S.begin(), E = S.end();
|
||||||
I != E; ++I) {
|
I != E; ++I) {
|
||||||
if (find_leader(anticIn, VN.lookup(*I)) == 0)
|
// For non-opaque values, we should already have a value numbering.
|
||||||
|
// However, for opaques, such as constants within PHI nodes, it is
|
||||||
|
// possible that they have not yet received a number. Make sure they do
|
||||||
|
// so now.
|
||||||
|
uint32_t valNum = 0;
|
||||||
|
if (isa<BinaryOperator>(*I) || isa<CmpInst>(*I))
|
||||||
|
valNum = VN.lookup(*I);
|
||||||
|
else
|
||||||
|
valNum = VN.lookup_or_add(*I);
|
||||||
|
if (find_leader(anticIn, valNum) == 0)
|
||||||
val_insert(anticIn, *I);
|
val_insert(anticIn, *I);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user