17 #ifndef __PREFERSPLIT__
18 #define __PREFERSPLIT__
37 SplitInstance(
Varnode *v,int4 off) { vn = v; splitoffset = off; hi = (
Varnode *)0; lo = (
Varnode *)0; }
40 const vector<PreferSplitRecord> *records;
41 vector<PcodeOp *> tempsplits;
42 void fillinInstance(SplitInstance *inst,
bool bigendian,
bool sethi,
bool setlo);
43 void createCopyOps(SplitInstance *ininst,SplitInstance *outinst,
PcodeOp *op,
bool istemp);
44 bool testDefiningCopy(SplitInstance *inst,
PcodeOp *def,
bool &istemp);
45 void splitDefiningCopy(SplitInstance *inst,
PcodeOp *def,
bool istemp);
46 bool testReadingCopy(SplitInstance *inst,
PcodeOp *readop,
bool &istemp);
47 void splitReadingCopy(SplitInstance *inst,
PcodeOp *readop,
bool istemp);
48 bool testZext(SplitInstance *inst,
PcodeOp *op);
49 void splitZext(SplitInstance *inst,
PcodeOp *op);
50 bool testPiece(SplitInstance *inst,
PcodeOp *op);
51 void splitPiece(SplitInstance *inst,
PcodeOp *op);
52 bool testSubpiece(SplitInstance *inst,
PcodeOp *op);
53 void splitSubpiece(SplitInstance *inst,
PcodeOp *op);
54 bool testLoad(SplitInstance *inst,
PcodeOp *op);
55 void splitLoad(SplitInstance *inst,
PcodeOp *op);
56 bool testStore(SplitInstance *inst,
PcodeOp *op);
57 void splitStore(SplitInstance *inst,
PcodeOp *op);
58 bool splitVarnode(SplitInstance *inst);
60 bool testTemporary(SplitInstance *inst);
61 void splitTemporary(SplitInstance *inst);
63 void init(
Funcdata *fd,
const vector<PreferSplitRecord> *rec);
65 static void initialize(vector<PreferSplitRecord> &records);
67 void splitAdditional(
void);