Beispiel #1
0
 public override void EvalCond(PathCond evalCond,
                               IDictionary <FullCellAddr, PathCond> evalConds,
                               List <CGCachedExpr> caches)
 {
     if (es.Length == 3)
     {
         CachedAtom atom = new CachedAtom(es[0], caches);
         es[0].EvalCond(evalCond, evalConds, caches);
         es[0] = atom.cachedExpr;
         es[1].EvalCond(evalCond.And(atom), evalConds, caches);
         es[2].EvalCond(evalCond.AndNot(atom), evalConds, caches);
     }
 }
Beispiel #2
0
 public override void EvalCond(PathCond evalCond,
                               IDictionary <FullCellAddr, PathCond> evalConds,
                               List <CGCachedExpr> caches)
 {
     for (int i = 0; i < es.Length; i++)
     {
         es[i].EvalCond(evalCond, evalConds, caches);
         if (SHORTCIRCUIT_EVALCONDS && i != es.Length - 1)
         {
             // Take short-circuit evaluation into account for precision
             CachedAtom atom = new CachedAtom(es[i], caches);
             evalCond = evalCond.AndNot(atom);
             es[i]    = atom.cachedExpr;
         }
     }
 }