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);
Definition: prefersplit.hh:23
Container for data structures associated with a single function.
Definition: funcdata.hh:45
Definition: prefersplit.hh:29
Lowest level operation of the p-code language.
Definition: op.hh:58
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
The Varnode and VarnodeBank classes.
Data defining a specific memory location.
Definition: pcoderaw.hh:33