downcast capability in LaneDivide, moved LaneDivide to stackstall

This commit is contained in:
caheckman 2019-10-25 08:55:18 -04:00
parent fa82d8c8f3
commit e90c0c7071
4 changed files with 41 additions and 12 deletions

View file

@ -165,6 +165,7 @@ class LaneDivide : public TransformManager {
LaneDescription description; ///< Global description of lanes that need to be split
vector<WorkNode> workList; ///< List of Varnodes still left to trace
bool allowSubpieceTerminator; ///< \b true if we allow lanes to be cast (via SUBPIECE) to a smaller integer size
TransformVar *setReplacement(Varnode *vn,int4 numLanes,int4 skipLanes);
void buildUnaryOp(OpCode opc,PcodeOp *op,TransformVar *inVars,TransformVar *outVars,int4 numLanes);
@ -178,7 +179,7 @@ class LaneDivide : public TransformManager {
bool traceBackward(TransformVar *rvn,int4 numLanes,int4 skipLanes);
bool processNextWork(void); ///< Process the next Varnode on the work list
public:
LaneDivide(Funcdata *f,Varnode *root,const LaneDescription &desc); ///< Constructor
LaneDivide(Funcdata *f,Varnode *root,const LaneDescription &desc,bool allowDowncast); ///< Constructor
bool doTrace(void); ///< Trace lanes as far as possible from the root Varnode
};