2011/9/13 Richard Sandiford <richard.sandif...@linaro.org>
>
> Ayal Zaks <ayal.z...@gmail.com> writes:
> > So instead of navigating directly from
> > ps_insn->ddg_node->node_sched_params, we now use indices and lookup
> > pointees in ddg_node and node_sched_params arrays. A bit of a
> > nuisance, but it's ok with me.
>
> Well, IMO, ps_insn->ddg_node->node_sched_params is the same amount
> of indirection as node_sched_params[ps_insn->id].
>

Agreed. Both involve one indirection. The difference is in lookup
versus using each single direct pointer access.

>
> > o One could still achieve the goal of having ps_insn's with
> > node_sched_params but free of ddg_node's, w/o penalizing the existing
> > direct access from ddg_node->node_sched_params, and w/o replicating
> > the interface. If you add an (insn field and an) aux union to ps_insn,
> > whose info points to your node_sched_params, you could reuse the same
> > set of macros. Admittedly, it's a space-time tradeoff, where the space
> > is probably not a major concern, and there are other places to look
> > for first in sms to save time.
>
> I'm not sure what you mean by "replicating the interface".  There's
> still only one interface for getting schedule params: everything still
> goes through the SCHED_* macros.
>
> If anything, I think having a way of going directly from the ps_insn to
> the sched params _would_ replicate the interface, because some parts of
> SMS want the scheduling parameters for a ddg node rather than a ps_insn.
> So some parts would (presumably) still use SCHED_* macros for a node,
> while the rest would use some other interface for ps_insns.

If we add to ps_insn the same aux structure as ddg_node has, with info
pointing to node_sched_params, we could reuse the same set of macros.

>
> But I'll do that if you think it's better.


No need, your solution is fine. Just wanted to clarify the options.

>
>   If we do, I think we
> should remove the current SCHED_* macros and just have one that
> goes from a ddg node to the parameters structure itself.
> So SCHED_TIME (node) becomes SCHED_PARAMS (node)->time, etc.
> Code that operates on ps_insns could just use pi->sched_params->time.
>
> But if we want to keep SCHED_TIME, etc., macros that can be used for
> everything, then I don't see how changes to ps_insn would help.
>
> > o first_reg_move and nreg_moves will be redundant for regmoves, right?
> > No refactoring is perfect...
>
> After the patches, they're only there for debugging.  I did wonder
> whether I should just remove them.


I'd prefer not to keep useless fields around. If left only for
debugging, better document and/or rename.

>
> > o it could be useful to have a debug version which checks array
> > bounds, in case one feeds a bad index.
>
> FWIW, VEC does this for us.
>

ok, right, in patch [3/4], for node_sched_params and ps_reg_move_info.

>
> > o and a minor comment below:
> >
> >> /* The scheduling parameters held for each node. */
> >> typedef struct node_sched_params
> >> {
> >> - int asap; /* A lower-bound on the absolute scheduling cycle. */
> >> int time; /* The absolute scheduling cycle (time >= asap). */
> >
> > Please fix/remove the "(time >= asap)" comment, as there's no asap
> > there any more.
>
> OK.

Thanks,
Ayal.

>
> Richard

Reply via email to