Hi,
On Tue, 19 Apr 2011, Easwaran Raman wrote:
> > That is correct but is also what the use of stack_vars[u].representative
> > achieves alone, ...
> >
> >> I am adding a check to that effect.
> >
> > ... without any check.
> >
> > @@ -596,7 +581,8 @@
> > if (vb->conflicts)
> > {
> > EXECUTE_IF_SET_IN_BITMAP (vb->conflicts, 0, u, bi)
> > - add_stack_var_conflict (a, stack_vars[u].representative);
> > + if (stack_vars[u].next == EOC && stack_vars[u].representative == u)
> > + add_stack_var_conflict (a, u);
> > BITMAP_FREE (vb->conflicts);
> > }
> > }
> >
> > What's your objective with this change? I find the original code clearer.
>
> Let us say we try to merge 'a' to 'b' and 'a' has conflicts with many
> members of an existing partition C. It is not necessary to add all
> those conflicts to 'b' since they will be never considered in the call
> to union_stack_vars.
Right, that's why I was objecting to your initial change. The original
code (adding stack_vars[u].representative to the conflicts of A) made sure
the target conflict bitmap only got representatives added. That's why I
was asking why you changed this area at all.
> I was motivated by your comment on bit-vector bloat to try this, but if
> this affects readability I'll happily revert back to what it was before.
Ciao,
Michael.