This is the mail archive of the
mailing list for the GCC project.
Re: [patch] Separate immediate uses and phi routines from tree-flow*.h
- From: Andrew MacLeod <amacleod at redhat dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 25 Sep 2013 09:22:12 -0400
- Subject: Re: [patch] Separate immediate uses and phi routines from tree-flow*.h
- Authentication-results: sourceware.org; auth=none
- References: <5241A43E dot 7040207 at redhat dot com> <CAFiYyc3b7hEBUEytGck69eX3G7A6qirJ0BVxoM5vDLU=RXqi8A at mail dot gmail dot com>
On 09/25/2013 04:49 AM, Richard Biener wrote:
On Tue, Sep 24, 2013 at 4:39 PM, Andrew MacLeod <email@example.com> wrote:
3 - a few routines seem like basic gimple routines, but really turn out to
require the operand infrastructure to implement... so they are moved to
tree-ssa-operands.[ch] as well. This sort of thing showed up when removing
tree-ssa-operands.h from the gimple.h include file. These were things like
gimple_vuse_op, gimple_vdef_op, update_stmt, and update_stmt_if_modified
Note that things like gimple_vuse_op are on the interface border between
gimple (where the SSA operands are stored) and SSA operands. So
it's not so clear for them given they access internal gimple fields directly
but use the regular SSA operand API.
I'd prefer gimple_vuse_op and gimple_vdef_op to stay in gimple.[ch].
If you want to remove the tree-ssa-operands.h include from gimple.h
(in some way makes sense), then we need a new gimple-ssa.[ch]
for routines that operate on the "gimple in SSA" IL (not purely on
gimple, which could be not in SSA form and not purely on the SSA
web which could in theory be constructed over a non-GIMPLE representation).
Actually I like the idea of gimple-ssa.[ch]. tree-ssa-operands.[ch]
would then be solely the place for the operand infrastructure internals
implementation, not a place for generic SSA utility routines related
to SSA operands.
Moving update_stmt/update_stmt_if_modified is a similar case but
maybe less obvious (unless we have gimple-ssa.[ch]).
What do you think?
Yeah, I was mulling something similar, I wasnt super thrilled that those
were going into tree-ssa-operands.h... but they didnt belong in gimple.h
either. I think adding gimple-ssa.[ch] is the way to go
Yeah, I think you are right. Its not being used by tree only routines,
and it trivial in that case anyway.
(swap_tree_operands): Move prototype to tree-ssa-operands.h.
rename to swap_ssa_operands and remove the !ssa_operands_active
path? (should be no longer needed I think)
(gimple_phi_arg_def, gimple_phi_arg_def_ptr, gimple_phi_arg_edge,
gimple_phi_arg_set_location, gimple_phi_arg_has_location, phi_nodes,
phi_nodes_ptr, set_phi_nodes, phi_ssa_name_p): Move to tree-phinodes.h.
I always found the separation of PHI node API from gimple API odd ...
now, PHI nodes are a SSA speciality. Unless the gimple_phi class
moves to tree-phinodes.h the same comments as to gimple_vuse_op
apply. But maybe everything will be more obvious once we separate
the core gimple data structure from the gimple API stuff ...
Hrm. Yeah, this one isn't as clear as it might seem at first. gimple.h
does have a few accessors for the base statement kind... and these are
accessors for the argument which is from core-types.h. I imagine that
tree-phinodes.h should do all the phi-node related stuff short of the
actual stmt itself... but its not immediately obvious. I'd like to leave
these in tree-phinodes.h and I'll make a stab at how to manage that
next.. it would actually be nice to get struct phi_arg_d *out* of
core-types.h.. but maybe thats too grand. I can move them again later
if it turns out the should be in the border file or elsewhere.
I'll do the massage., I like the gimple-ssa border files. I suspect
there will be more shuffling of some of these routines down the road..
right now its pretty high level separation thats happening. Once things
are better clustered, I expect more appropriate fine grained breakdowns
will become apparent.
Overall the patch looks ok, either massage it according to my comments
above (thinking about gimple-ssa.[ch]) or follow up with a separate patch
(not that moving things twice will hurt).