mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 23:48:56 +00:00
GEP instructions can never be constant propogated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2284 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
27e3420ce9
commit
6428a27ee3
@ -429,14 +429,9 @@ void SCCP::UpdateInstruction(Instruction *I) {
|
||||
|
||||
|
||||
//===-------------------------------------------------------------------===//
|
||||
// Handle Unary instructions...
|
||||
// Also treated as unary here, are cast instructions and getelementptr
|
||||
// instructions on struct* operands.
|
||||
// Handle Unary and cast instructions...
|
||||
//
|
||||
if (isa<UnaryOperator>(I) || isa<CastInst>(I) ||
|
||||
(isa<GetElementPtrInst>(I) &&
|
||||
cast<GetElementPtrInst>(I)->isStructSelector())) {
|
||||
|
||||
if (isa<UnaryOperator>(I) || isa<CastInst>(I)) {
|
||||
Value *V = I->getOperand(0);
|
||||
InstVal &VState = getValueState(V);
|
||||
if (VState.isOverdefined()) { // Inherit overdefinedness of operand
|
||||
@ -456,6 +451,16 @@ void SCCP::UpdateInstruction(Instruction *I) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//===-----------------------------------------------------------------===//
|
||||
// Handle GetElementPtr instructions...
|
||||
//
|
||||
if (isa<GetElementPtrInst>(I)) {
|
||||
markOverdefined(I);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//===-----------------------------------------------------------------===//
|
||||
// Handle Binary instructions...
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user