summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e0a05ba)
Fixed && and || for non-predicate guards.
void context_enterAndClause (exprNode e)
{
void context_enterAndClause (exprNode e)
{
+ DPRINTF (("enter and clause: %s", exprNode_unparse (e)));
usymtab_trueBranch (guardSet_copy (exprNode_getGuards (e)));
pushClause (ANDCLAUSE);
}
usymtab_trueBranch (guardSet_copy (exprNode_getGuards (e)));
pushClause (ANDCLAUSE);
}
}
e->guards = guardSet_new ();
}
e->guards = guardSet_new ();
e->sets = sRefSet_new ();
e->msets = sRefSet_new ();
e->uses = sRefSet_new ();
e->sets = sRefSet_new ();
e->msets = sRefSet_new ();
e->uses = sRefSet_new ();
+ exprNode_produceGuards (e2);
ret->guards = guardSet_or (ret->guards, e2->guards);
}
else if (opid == AND_OP)
{
ret->guards = guardSet_or (ret->guards, e2->guards);
}
else if (opid == AND_OP)
{
+ exprNode_produceGuards (e2); /* evans 2003-08-13: need to produce guards for expression */
+ /* Shouldn't this have already happened? */
+ DPRINTF (("Anding guards: %s / %s", guardSet_unparse (ret->guards), guardSet_unparse (e2->guards)));
ret->guards = guardSet_and (ret->guards, e2->guards);
}
else
ret->guards = guardSet_and (ret->guards, e2->guards);
}
else
+ DPRINTF (("Popping and: %s / %s",
+ guardSet_unparse (utab->guards),
+ guardSet_unparse (exprNode_getGuards (pred))));
+
utab->guards = guardSet_levelUnionFree (utab->guards,
guardSet_invert (exprNode_getGuards (pred)),
utab->lexlevel);
utab->guards = guardSet_levelUnionFree (utab->guards,
guardSet_invert (exprNode_getGuards (pred)),
utab->lexlevel);