Overlapping input fixes

This commit is contained in:
caheckman 2020-03-17 13:12:57 -04:00
parent a8f9d4f7ac
commit 2df81f803b
4 changed files with 33 additions and 9 deletions

View file

@ -1649,6 +1649,12 @@ int4 AncestorRealistic::enterNode(State &state)
multiDepth += 1;
stateStack.push_back(State(op,0));
return enter_node; // Nothing to check, start traversing inputs of MULTIEQUAL
case CPUI_PIECE:
// If the trial is getting pieced together and then truncated in a register,
// this is evidence of artificial data-flow.
if (state.vn->getSize() > trial->getSize() && state.vn->getSpace()->getType() != IPTR_SPACEBASE)
return pop_fail;
return pop_solid;
default:
return pop_solid; // Any other LOAD or arithmetic/logical operation is viewed as solid movement
}