54 bool finalJudgement(
Varnode *vn);
60 bool getFlip(
void)
const {
return matchflip; }
138 bool iblock2posta_true;
139 int4 camethruposta_slot;
144 map<int4,Varnode *> replacement;
145 vector<PcodeOp *> returnop;
146 vector<bool> heritageyes;
148 void buildHeritageArray(
void);
149 bool testIBlock(
void);
150 bool findInitPre(
void);
151 bool verifySameCondition(
void);
154 bool testRemovability(
PcodeOp *op);
155 void predefineDirectMulti(
PcodeOp *op);
156 void adjustDirectMulti(
void);
159 void doReplacement(
PcodeOp *op);
160 void fixReturnOp(
void);
213 struct MultiPredicate {
221 bool discoverZeroSlot(
Varnode *vn);
222 bool discoverCbranch(
void);
223 void discoverPathIsTrue(
void);
224 bool discoverConditionalZero(
Varnode *vn);
233 virtual void getOpList(vector<uint4> &oplist)
const;
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
The list of groups defining a root Action.
Definition: action.hh:29
static bool varnodeComplement(Varnode *a, Varnode *b)
Do the given boolean Varnodes always hold complementary values.
Definition: condexe.cc:193
Container for data structures associated with a single function.
Definition: funcdata.hh:45
bool contains(const string &nm) const
Check if this ActionGroupList contains a given group.
Definition: action.hh:37
bool verifyCondition(PcodeOp *op, PcodeOp *initop)
Perform the correlation test on two CBRANCH operations.
Definition: condexe.cc:341
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: condexe.hh:175
Large scale transformations applied to the varnode/op graph.
Definition: action.hh:50
A class for simplifying a series of conditionally executed statements.
Definition: condexe.hh:131
Utilities for processing data structures associated with a single function.
~ConditionMarker(void)
Destructor.
Definition: condexe.cc:30
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
A basic block for p-code operations.
Definition: block.hh:363
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: condexe.hh:229
Class for performing a single transformation on a PcodeOp or Varnode.
Definition: action.hh:192
Search for and remove various forms of redundant CBRANCH operations.
Definition: condexe.hh:172
RuleOrPredicate(const string &g)
Constructor.
Definition: condexe.hh:228
bool getFlip(void) const
Return true is the expressions are anti-correlated.
Definition: condexe.hh:60
static bool varnodeSame(Varnode *a, Varnode *b)
Do the given Varnodes hold the same value, possibly as constants.
Definition: condexe.cc:178
ConditionalExecution(Funcdata *f)
Constructor.
Definition: condexe.hh:163
ActionConditionalExe(const string &g)
Constructor.
Definition: condexe.hh:174
ConditionMarker(void)
Constructor.
Definition: condexe.cc:18
int4 getMultiSlot(void) const
Get the MULTIEQUAL slot in the critical path.
Definition: condexe.hh:59
Simplify predication constructions involving the INT_OR operator.
Definition: condexe.hh:211
A helper class for describing the similarity of the boolean condition between 2 CBRANCH operations...
Definition: condexe.hh:33