else
output = actualInputterm;
- inputterm = output;
+ if (inputterm != output)
+ {
+ UpdateSimplifyMap(inputterm,output,false);
+ inputterm = output;
+ }
}
const ASTVec& children = inputterm.GetChildren();
k = inputterm.GetKind();
// Perform constant propagation if possible.
+ // This should do nothing if the simplifyingnodefactory is used.
if (k != BEEV::UNDEFINED && k != BEEV::SYMBOL) {
bool allConstant = true;
if (pulledUp != inputterm)
{
ASTNode r = SimplifyTerm(pulledUp);
+ UpdateSimplifyMap(actualInputterm,r,NULL);
UpdateSimplifyMap(inputterm,r,NULL);
return r;
}
output = annihilator;
//memoize
UpdateSimplifyMap(inputterm, output, false, VarConstMap);
+ UpdateSimplifyMap(actualInputterm, output, false, VarConstMap);
//cerr << "output of SimplifyTerm: " << output << endl;
return output;
}
{
output = annihilator;
UpdateSimplifyMap(inputterm, output, false, VarConstMap);
+ UpdateSimplifyMap(actualInputterm, output, false, VarConstMap);
return output;
}
assert(!output.IsNull());
assert(inputterm.GetValueWidth() == output.GetValueWidth());
assert(inputterm.GetIndexWidth() == output.GetIndexWidth());
+ assert(hasBeenSimplified(output));
return output;
} //end of SimplifyTerm()