consistent with other places where boolean guards are stored.
git-svn-id: svn://svn.valgrind.org/vex/trunk@557
break;
case Ist_Exit:
- sk_assert(isAtom(st->Ist.Exit.cond));
+ sk_assert(isAtom(st->Ist.Exit.guard));
break;
case Ist_Dirty:
case Ist_Exit:
/* if (!hasBogusLiterals) */
- complainIfUndefined( &mce, st->Ist.Exit.cond );
+ complainIfUndefined( &mce, st->Ist.Exit.guard );
break;
case Ist_Dirty:
if (stmt->Ist.Exit.dst->tag != Ico_U32)
vpanic("isel_x86: Ist_Exit: dst is not a 32-bit value");
dst = iselIntExpr_RI(env, IRExpr_Const(stmt->Ist.Exit.dst));
- cc = iselCondCode(env,stmt->Ist.Exit.cond);
+ cc = iselCondCode(env,stmt->Ist.Exit.guard);
addInstr(env, X86Instr_Goto(Ijk_Boring, cc, dst));
return;
}
break;
case Ist_Exit:
vex_printf( "if (" );
- ppIRExpr(s->Ist.Exit.cond);
+ ppIRExpr(s->Ist.Exit.guard);
vex_printf( ") goto ");
ppIRConst(s->Ist.Exit.dst);
break;
s->Ist.Dirty.details = d;
return s;
}
-IRStmt* IRStmt_Exit ( IRExpr* cond, IRConst* dst ) {
- IRStmt* s = LibVEX_Alloc(sizeof(IRStmt));
- s->tag = Ist_Exit;
- s->Ist.Exit.cond = cond;
- s->Ist.Exit.dst = dst;
+IRStmt* IRStmt_Exit ( IRExpr* guard, IRConst* dst ) {
+ IRStmt* s = LibVEX_Alloc(sizeof(IRStmt));
+ s->tag = Ist_Exit;
+ s->Ist.Exit.guard = guard;
+ s->Ist.Exit.dst = dst;
return s;
}
case Ist_Dirty:
return IRStmt_Dirty(dopyIRDirty(s->Ist.Dirty.details));
case Ist_Exit:
- return IRStmt_Exit(dopyIRExpr(s->Ist.Exit.cond),
+ return IRStmt_Exit(dopyIRExpr(s->Ist.Exit.guard),
dopyIRConst(s->Ist.Exit.dst));
default:
vpanic("dopyIRStmt");
return False;
return True;
case Ist_Exit:
- return isAtom(st->Ist.Exit.cond);
+ return isAtom(st->Ist.Exit.guard);
default:
vpanic("isFlatIRStmt(st)");
}
useBeforeDef_Expr(bb,stmt,d->mAddr,def_counts);
break;
case Ist_Exit:
- useBeforeDef_Expr(bb,stmt,stmt->Ist.Exit.cond,def_counts);
+ useBeforeDef_Expr(bb,stmt,stmt->Ist.Exit.guard,def_counts);
break;
default:
vpanic("useBeforeDef_Stmt");
sanityCheckFail(bb,stmt,"IRStmt.Dirty: ill-formed");
case Ist_Exit:
- tcExpr( bb, stmt, stmt->Ist.Exit.cond, gWordTy );
- if (typeOfIRExpr(tyenv,stmt->Ist.Exit.cond) != Ity_I1)
- sanityCheckFail(bb,stmt,"IRStmt.Exit.cond: not :: Ity_I1");
+ tcExpr( bb, stmt, stmt->Ist.Exit.guard, gWordTy );
+ if (typeOfIRExpr(tyenv,stmt->Ist.Exit.guard) != Ity_I1)
+ sanityCheckFail(bb,stmt,"IRStmt.Exit.guard: not :: Ity_I1");
if (typeOfIRConst(stmt->Ist.Exit.dst) != gWordTy)
sanityCheckFail(bb,stmt,"IRStmt.Exit.dst: not :: guest word type");
break;
addStmtToIRBB(bb, IRStmt_Dirty(d2));
break;
case Ist_Exit:
- e1 = flatten_Expr(bb, st->Ist.Exit.cond);
+ e1 = flatten_Expr(bb, st->Ist.Exit.guard);
addStmtToIRBB(bb, IRStmt_Exit(e1, st->Ist.Exit.dst));
break;
default:
case Ist_Exit: {
IRExpr* fcond;
- vassert(isAtom(st->Ist.Exit.cond));
- fcond = fold_Expr(subst_Expr(env, st->Ist.Exit.cond));
+ vassert(isAtom(st->Ist.Exit.guard));
+ fcond = fold_Expr(subst_Expr(env, st->Ist.Exit.guard));
if (fcond->tag == Iex_Const) {
/* Interesting. The condition on this exit has folded down to
a constant. */
addUses_Expr(set, d->args[i]);
return;
case Ist_Exit:
- addUses_Expr(set, st->Ist.Exit.cond);
+ addUses_Expr(set, st->Ist.Exit.guard);
return;
default:
vex_printf("\n");
break;
case Ist_Exit:
- vassert(isAtom(st->Ist.Exit.cond));
+ vassert(isAtom(st->Ist.Exit.guard));
break;
case Ist_PutI:
out the set, since we can no longer claim that the next
event for any part of the guest state is definitely a
write. */
- vassert(isAtom(st->Ist.Exit.cond));
+ vassert(isAtom(st->Ist.Exit.guard));
for (j = 0; j < env->used; j++)
env->inuse[j] = False;
continue;
occCount_Expr(env, d->args[i]);
return;
case Ist_Exit:
- occCount_Expr(env, st->Ist.Exit.cond);
+ occCount_Expr(env, st->Ist.Exit.guard);
return;
default:
vex_printf("\n"); ppIRStmt(st); vex_printf("\n");
case Ist_Exit:
return IRStmt_Exit(
- tbSubst_Expr(env, st->Ist.Exit.cond),
+ tbSubst_Expr(env, st->Ist.Exit.guard),
st->Ist.Exit.dst
);
case Ist_Dirty:
deltaIRExpr(st->Ist.Tmp.data, delta);
break;
case Ist_Exit:
- deltaIRExpr(st->Ist.Exit.cond, delta);
+ deltaIRExpr(st->Ist.Exit.guard, delta);
break;
case Ist_STle:
deltaIRExpr(st->Ist.STle.addr, delta);
}
/* negate the test condition */
- st->Ist.Exit.cond = IRExpr_Unop(Iop_Not1,dopyIRExpr(st->Ist.Exit.cond));
+ st->Ist.Exit.guard
+ = IRExpr_Unop(Iop_Not1,dopyIRExpr(st->Ist.Exit.guard));
/* --- The unroller proper. Both idioms are by now --- */
/* --- now converted to idiom 1. --- */
vassert(isAtom(st->Ist.STle.data));
break;
case Ist_Exit:
- vassert(isAtom(st->Ist.Exit.cond));
+ vassert(isAtom(st->Ist.Exit.guard));
break;
case Ist_Dirty:
d = st->Ist.Dirty.details;
IRDirty* details;
} Dirty;
struct {
- IRExpr* cond;
+ IRExpr* guard;
IRConst* dst;
} Exit;
} Ist;
extern IRStmt* IRStmt_Tmp ( IRTemp tmp, IRExpr* data );
extern IRStmt* IRStmt_STle ( IRExpr* addr, IRExpr* data );
extern IRStmt* IRStmt_Dirty ( IRDirty* details );
-extern IRStmt* IRStmt_Exit ( IRExpr* cond, IRConst* dst );
+extern IRStmt* IRStmt_Exit ( IRExpr* guard, IRConst* dst );
extern IRStmt* dopyIRStmt ( IRStmt* );
break;
case Ist_Exit:
- assert(isAtom(st->Ist.Exit.cond));
+ assert(isAtom(st->Ist.Exit.guard));
break;
case Ist_Dirty:
return isBogusAtom(st->Ist.STle.addr)
|| isBogusAtom(st->Ist.STle.data);
case Ist_Exit:
- return isBogusAtom(st->Ist.Exit.cond);
+ return isBogusAtom(st->Ist.Exit.guard);
default:
unhandled:
ppIRStmt(st);
case Ist_Exit:
/* if (!hasBogusLiterals) */
- complainIfUndefined( &mce, st->Ist.Exit.cond );
+ complainIfUndefined( &mce, st->Ist.Exit.guard );
break;
case Ist_Dirty: