From: Jan Hubicka <jh@suse.cz>
To: "Pop Sébastian" <pop@gauvain.u-strasbg.fr>
Cc: gcc@gcc.gnu.org
Subject: Re: [RFC] CFG hooks for rtl/tree specificities
Date: Tue, 01 Apr 2003 16:23:00 -0000 [thread overview]
Message-ID: <20030401154607.GF904@kam.mff.cuni.cz> (raw)
In-Reply-To: <20030401145007.GA25362@gauvain.u-strasbg.fr>
> Hi,
>
> I would like to have your opinion on the following reorganization of the CFG functions.
>
> I propose to keep all the functions that deal with IR specificities into a hook structure
> a little bit the same way we handle the specificities of a language front-end in langhooks.
I like it :)
> These functions are initialized during the CFG construction. This would allow the CFG
> analyzers and optimizers to work at both the RTL and the tree levels.
I think all we need is to have two cfg_hooks pointer and switch betwen
cfg_rtl_hooks, cfg_rtl_layout_hooks and cfg_tree_hooks so we don't need
to fill up the structure each time.
>
>
> cfghooks.h will contain something like:
> ----
>
> /* Initializations specific to either the tree or the rtl level. */
> extern void tree_register_cfg_hooks PARAMS ((void));
> extern void rtl_register_cfg_hooks PARAMS ((void));
>
> struct cfg_hooks
> {
> basic_block (*cfgh_split_edge) PARAMS ((edge));
> void (*cfgh_cfg_layout_initialize) PARAMS ((struct loops *));
> void (*cfgh_cfg_layout_finalize) PARAMS ((void));
> void (*cfgh_verify_flow_info) PARAMS ((void));
> };
>
> /* The following macros act either at the tree level or at the rtl level. */
> #define split_edge(e) cfg_hooks.cfgh_split_edge (e)
> #define cfg_layout_initialize(l) cfg_hooks.cfgh_cfg_layout_initialize (l)
> #define cfg_layout_finalize() cfg_hooks.cfgh_cfg_layout_finalize ()
> #define verify_flow_info() cfg_hooks.cfgh_verify_flow_info ()
>
> extern struct cfg_hooks cfg_hooks;
This looks nice.
It would be interesting to think about what operations do we really need
- for instance split_edge should be probably implementable already via
the primitive operations (basic block creation, edge redirection). Our
current API is not 100% ready for that so we will probably need cleanup
on the way.
I would be happy about switching to the hooks first and leaving it to me
to cleanup the APIs if you preffer.
Honza
next prev parent reply other threads:[~2003-04-01 15:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-01 16:11 Pop Sébastian
2003-04-01 16:23 ` Jan Hubicka [this message]
2003-04-01 17:05 ` Pop Sébastian
2003-04-01 17:08 ` Jan Hubicka
2003-04-01 18:12 ` Diego Novillo
2003-04-02 14:19 ` Pop Sébastian
2003-06-14 13:13 ` Jan Hubicka
2003-06-14 19:42 ` Pop Sébastian
2003-06-14 21:01 ` Jan Hubicka
2003-06-15 16:38 ` Jan Hubicka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030401154607.GF904@kam.mff.cuni.cz \
--to=jh@suse.cz \
--cc=gcc@gcc.gnu.org \
--cc=pop@gauvain.u-strasbg.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).