Allow splitting of free varnodes

This commit is contained in:
caheckman 2019-10-18 17:18:33 -04:00
parent ce0ab31576
commit babc6d4d9b
2 changed files with 12 additions and 6 deletions

View file

@ -523,6 +523,9 @@ bool Funcdata::fillinReadOnly(Varnode *vn)
return false; // No change was made
}
if (vn->getSize() > sizeof(uintb))
return false; // Constant will exceed precision
uintb res;
uint1 bytes[32];
try {

View file

@ -1937,18 +1937,21 @@ TransformVar *LaneDivide::setReplacement(Varnode *vn,int4 numLanes,int4 skipLane
return newSplit(vn,description, numLanes, skipLanes);
}
if (vn->isFree())
return (TransformVar *)0; // Abort
// Allow free varnodes to be split
// if (vn->isFree())
// return (TransformVar *)0;
if (vn->isTypeLock())
return (TransformVar *)0;
vn->setMark();
TransformVar *res = newSplit(vn, description, numLanes, skipLanes);
if (!vn->isFree()) {
workList.push_back(WorkNode());
workList.back().lanes = res;
workList.back().numLanes = numLanes;
workList.back().skipLanes = skipLanes;
}
return res;
}