mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 21:35:07 +00:00
Implement select.ll:test16: fold load (select C, X, null) -> load X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16499 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
60a11f1970
commit
684fe210a9
@ -3071,6 +3071,20 @@ Instruction *InstCombiner::visitLoadInst(LoadInst &LI) {
|
||||
return new SelectInst(SI->getCondition(), V1, V2);
|
||||
}
|
||||
|
||||
// load (select (cond, null, P)) -> load P
|
||||
if (Constant *C = dyn_cast<Constant>(SI->getOperand(1)))
|
||||
if (C->isNullValue()) {
|
||||
LI.setOperand(0, SI->getOperand(2));
|
||||
return &LI;
|
||||
}
|
||||
|
||||
// load (select (cond, P, null)) -> load P
|
||||
if (Constant *C = dyn_cast<Constant>(SI->getOperand(2)))
|
||||
if (C->isNullValue()) {
|
||||
LI.setOperand(0, SI->getOperand(1));
|
||||
return &LI;
|
||||
}
|
||||
|
||||
} else if (PHINode *PN = dyn_cast<PHINode>(Op)) {
|
||||
// load (phi (&V1, &V2, &V3)) --> phi(load &V1, load &V2, load &V3)
|
||||
bool Safe = PN->getParent() == LI.getParent();
|
||||
|
Loading…
x
Reference in New Issue
Block a user