treelang fix for rs6000 / treelang not proper front end
Steven Bosscher
s.bosscher@student.tudelft.nl
Mon Jun 9 21:09:00 GMT 2003
Tim Josling wrote:
> Steven Bosscher wrote:
>
>> So, what do we _want_ to show with treelang? What is the function of
>> treelang within GCC and what implications does that have for its design?
>>
>> Gr.
>> Steven
>
>
> The purpose is to make it easier for people to write front ends.
>
> If building trees is the best way to write front ends, it should do that.
>
> I don't fully understand what you are saying, but I think there are
> two questions.
Yeah my mails usually are too long :-)
> 1. Should you build trees which are then converted into rtl a function
> at a time. I think the answer here is you should use function at a
> time - i.e. build trees, not, go directly to rtl as treelang does now.
> However I have no experience with FAAT so I am really taking your word
> for it.
All new front ends should build whole functions as trees. Those trees
are then optimized (currently the only tree optimizer is the inliner,
but that is what tree-ssa is all about) and expanded to RTL, eventually
by a shared expander, so the front end only hands off function trees.
The front ends that do not build functions as trees right now are:
- G77, which is obsolete. Nobody has shown interest in even trying to
make it build functions as trees AFAIK. Scheduled for removal once G95
has proven itself.
- Ada, for which work to make it build functions as trees has been
announced a few times (but nothing so far, fingers crossed... ;-)
- Treelang...
I have to admit here that even in GCC 3.4 the only non-C front end that
uses the tree inliner has to hack its way around the C bias in
tree-inline.c. But on the tree-ssa branch, the tree inliner inlines is
part of the language independent optimization framework.
Maybe we should keep things as-is for 3.4 and go proper for 3.5 (when
tree-ssa will be merger).
> 2. Should the front end have its own language-specific tree
> representation which is then later converted into gcc-specific things
> (eg trees or rtl)?
>
> This depends on the context. For example, one may want to generate C
> out of the compiler, sometimes, instead of front ending GCC back end.
> In this case, you really need your own representation. Having your own
> representation also increases the isolation of the front end from the
> innards of GCC. With the COBOL compiler I have found this to be a very
> good thing.
I agree that having your own representation certainly can have
advantages, such as ease of porting to other back ends or for
source-to-source translators (C-like unparsing is also in the tree-ssa
branch BTW), or when you're developing a front end for a rather
complicated language (which is why G95 has its own representation).
But if an example front end should only clarify the "GCC front-end
interface", then there's really no reason to give it its own
representation. I believe that is the context treelang should be in:
keep it simple and make it easy to understand the essentials of the
front-end interface, hence 'tree' only.
But as you correctly pointed out in your first mail, someone will have
to try first. I'll see if I can come up with an example of what it
would look likein the next few weeks. In the mean time, I'll apply my
update of Ferfus's patch to tree-ssa if that's OK with Diego, and post a
patch for mainline as well. I'm sure it will not be so hard to clean it
up a bit more and maintain it until 3.4 is out. Does that sound like a
reasonable plan?
Gr.
Steven
More information about the Gcc
mailing list