This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Pascal front-end integration
- From: Frank Heckenbach <frank at g-n-u dot de>
- To: hebisch at math dot uni dot wroc dot pl, joseph at codesourcery dot com, gcc at gnu dot org, jim dot morrison at gmail dot com
- Date: Sat, 5 Mar 2005 04:52:50 +0100
- Subject: Re: Pascal front-end integration
- References: <E1D7NOt-0000HH-00@hera.math.uni.wroc.pl>
Waldek Hebisch wrote:
> > > 3) AFAIU dropping support for multiple backends is considered as a
> > > pre-condition to inclusion of GPC into GCC. GPC release wold be
> > > part of GCC release. People trying GPC snapshots would automatically
> > > get backend snapshot. I am affraid that for Pascal that means
> > > 6-8 months extra delay between including a feature in GPC and first
> > > bug reports (and consequently more effort for bug fixing).
> >
> > The way to avoid this is for front ends to have internal datastructures
> > decoupled from those of the rest of GCC and to have a small piece of code
> > that does the conversion (like the Ada front end's gigi), then just
> > maintain multiple versions of that small piece of code. This seems to
> > work well for Ada.
>
> GPC uses backend data structure when possible. I see no reason to
> duplicate backend functionality (Ada front is written in Ada, so they
> _had to_ duplicate a lot of infrastructure).
I see. That makes a difference I didn't know about. So what's
practical for Add might not be for us. (Unless we'd rewrite gpc in
Pascal. But that's a huge effort I don't really want to think about,
with small benefits.)
> We can hide (and are doing
> that now) most differences in macros.
>
> But there are few tricky questions: I old backends want us to call a
> function is it OK to always call a wrapper (empty for new backend)?
>
> Or an actual sample (the most nasty case I have found):
>
> case FLOAT_EXPR:
> #ifndef GCC_3_4
> case FFS_EXPR:
> #endif
>
> here we have moderatly sized switch and moving the case constant
> to backend dependent part would move the whole switch, hence the
> function containing the switch. Is it acceptable to have something
> like:
>
> case FLOAT_EXPR:
> CASE_FFS_EXPR
>
> with `CASE_FFS_EXPR' expanding to nothing for new backend.
BTW, I suppose we can just remove this case as we don't use FFS_EXPR
anyway. (This code was originally copied from the C frontend,
without checking whether we need it all.)
But the general question remains, as there are probably other
similar cases.
Frank
--
Frank Heckenbach, frank@g-n-u.de
http://fjf.gnu.de/
GnuPG and PGP keys: http://fjf.gnu.de/plan (7977168E)