public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Per Bothner <per@bothner.com>
To: tromey@redhat.com
Cc: GCC Hackers <gcc@gcc.gnu.org>
Subject: Re: Putting C++ code into gcc front end
Date: Fri, 07 Mar 2003 03:51:00 -0000	[thread overview]
Message-ID: <3E67FBA6.1000907@bothner.com> (raw)
In-Reply-To: <87isuzjb71.fsf@fleche.redhat.com>

Personally, I'd love to re-write all of Gcc in C++,
starting with using inheritance for tree nodes, so
we can actually get some static type-checking.
I don't think the issue of the people not having
C++ compilers is as important as developer convenience
and building a solid compiler:  I believe there are very
few people that have a C compiler but don't have or can't
easily get a C++ compiler.

I also think it would be very nice to combine the
two verifiers - it's a complicated algorithm, difficult
to get right, and there are lots of checks that one
or the other misses.

However, there are complications.  One problem is that
the data types are incompatible:  The compile-time
verifier uses treea, the run-time verifier uses run-time
classes and other data structures.  This difference
will presumably have to be hidden using macros or
conditional compilation.  (Compare the way jcf-reader.c
abstracts away what to do with the information read from
a .class file.)  A lot of the logic of the two verifiers
(i.e. big switch on opcodes) is similar; a large part of
the difference is the data structures - plus how we handle
the hard bits relating to subroutines.

I'm not sure the abstraction advantages of C++ helps all
that much.  The compile-time verifier is substanially
less code than the run-time verifier, though comments
some up some of the difference.  Given that both are
incomplete and have bugs (probably more in the compile-time
verifier) it's impossible to make a real comparison.

If I was doing the work, and I understood the issues and
existing code better than I do, I would replace the
subroutine-handling code in the compile-time verifier
with C code based on the algorithms and data structures
in the run-time verifier, and also merge in other missing
tests from the latter.  Then I'd hide the API (such of trees
etc) behind macros, and try plugging it into run-time
verifier.

However, that's a fair bit of work.  I think plugging the
run-time verifier into the compile-time environment *plus*
changing the boostrap framework so gcc/java can contain C++
code is also a fair bit of work.  I'll give my blessing
either way - if we can achieve consensus that using C++
in gcc/java is ok.
-- 
	--Per Bothner
per@bothner.com   http://www.bothner.com/per/

  parent reply	other threads:[~2003-03-07  2:19 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-04  3:06 Tom Tromey
2003-03-04  5:45 ` Gabriel Dos Reis
2003-03-05  0:54   ` Mike Stump
2003-03-04  7:01 ` Zack Weinberg
2003-03-04  7:12   ` Gabriel Dos Reis
2003-03-04  7:54     ` Zack Weinberg
2003-03-04  9:20       ` Gabriel Dos Reis
2003-03-04 17:35         ` Zack Weinberg
2003-03-04 15:05 ` Michael Matz
2003-03-04 15:06   ` Gabriel Dos Reis
2003-03-04 15:08   ` Lars Segerlund
2003-03-04 15:12     ` Gabriel Dos Reis
2003-03-04 15:33       ` Lars Segerlund
2003-03-04 15:58         ` Gabriel Dos Reis
2003-03-04 16:01         ` Olivier Galibert
2003-03-04 16:09           ` Kaveh R. Ghazi
2003-03-04 16:49             ` Nathan Sidwell
2003-03-04 17:18               ` Zack Weinberg
2003-03-04 21:46                 ` Michael Matz
2003-03-04 17:20         ` Andrew Haley
2003-03-04 17:36     ` Tom Tromey
2003-03-06 14:59       ` Fergus Henderson
2003-03-07  3:51       ` Per Bothner [this message]
2003-03-07 13:39         ` Pop Sébastian
2003-03-07 20:41           ` Neil Booth
2003-03-07 20:49             ` Per Bothner
2003-03-07 21:52             ` Geoff Keating
2003-03-07 21:57               ` Per Bothner
2003-03-07 22:55               ` Neil Booth
2003-03-07 22:57                 ` Geoff Keating
2003-03-07 23:05                   ` tm_gccmail
2003-03-07 23:24                     ` law
2003-03-07 23:07                   ` Neil Booth
2003-03-07 23:09                   ` Geert Bosch
2003-03-07 23:19                     ` Neil Booth
2003-03-08  0:37                       ` Steven Bosscher
2003-03-08  2:09                       ` Laurent Guerby
2003-03-08 15:27                 ` Toon Moene
2003-03-07 20:13         ` Joseph S. Myers
2003-03-04  9:53 Nathanael Nerode
2003-03-04 10:06 ` Gabriel Dos Reis
2003-03-04 11:25   ` Andreas Schwab
2003-03-04 10:19 Nathanael Nerode
2003-03-04 10:23 ` Gabriel Dos Reis
2003-03-04 11:20   ` Pop Sébastian
2003-03-04 12:42     ` Gabriel Dos Reis
     [not found] <616BE6A276E3714788D2AC35C40CD18DAD4FC1@whale.softwire.co.uk>
2003-03-04 11:55 ` Rupert Wood
2003-03-04 12:11   ` Richard Earnshaw
2003-03-04 12:46     ` Gabriel Dos Reis
2003-03-04 13:57       ` Olivier Galibert
2003-03-04 14:21         ` Lars Segerlund
2003-03-04 14:33         ` Richard Earnshaw
2003-03-04 14:46           ` Olivier Galibert
2003-03-04 14:53             ` Richard Earnshaw
2003-03-04 15:03               ` Gabriel Dos Reis
2003-03-04 15:11                 ` Olivier Galibert
2003-03-04 15:19                   ` Richard Earnshaw
2003-03-04 15:26                   ` Gabriel Dos Reis
2003-03-04 16:30                     ` Kaveh R. Ghazi
2003-03-04 17:17               ` Steven Bosscher
2003-03-04 17:41                 ` Phil Edwards
2003-03-04 18:37                   ` Daniel Berlin
2003-03-05 10:51                 ` Joseph S. Myers
2003-03-05 18:48                   ` Mark Mitchell
2003-03-04 17:33               ` Zack Weinberg
2003-03-04 17:53                 ` Phil Edwards
2003-03-04 20:50                   ` Geoff Keating
2003-03-04 21:01                     ` Gabriel Dos Reis
2003-03-04 22:03                       ` Geoff Keating
2003-03-04 22:49                         ` Michael Matz
2003-03-04 23:07                         ` Gareth Pearce
2003-03-05  2:13                           ` Michael S. Zick
2003-03-05  2:19                             ` Gareth Pearce
2003-03-05  0:50                         ` Diego Novillo
2003-03-04 18:26                 ` Geert Bosch
2003-03-04 21:48                 ` Michael Matz
2003-03-05  2:55       ` Mark Mitchell
2003-03-04 13:52     ` Nathan Sidwell
2003-03-04 14:22       ` Richard Earnshaw
2003-03-04 16:40         ` Nathan Sidwell
2003-03-04 18:18       ` Dale Johannesen
2003-03-04 19:25         ` Richard Earnshaw
2003-03-05 16:51         ` Marc Espie
2003-03-05 18:42           ` Dale Johannesen
2003-03-04 16:56 Nathanael Nerode
2003-03-04 17:29 Benjamin Kosnik
2003-03-04 17:30 Benjamin Kosnik
2003-03-04 17:55 Benjamin Kosnik
2003-03-04 20:02 ` Matt Austern
2003-03-04 20:08   ` Gareth Pearce
2003-03-04 21:50 ` Michael Matz
2003-03-05  8:48   ` Lars Segerlund
2003-03-05  9:40     ` Tom Lord
2003-03-04 22:02 ` Gabriel Dos Reis
2003-03-04 18:14 Nathanael Nerode
2003-03-04 18:21 ` Zack Weinberg
2003-03-04 18:28   ` Geert Bosch
2003-03-04 19:35     ` Zack Weinberg
2003-03-05  4:27 Robert Dewar
2003-03-05  7:00 ` Zack Weinberg
2003-03-05  7:57   ` Gabriel Dos Reis
2003-03-05 19:18     ` Mike Stump
2003-03-05 16:20 Robert Dewar
2003-03-05 16:31 ` Gabriel Dos Reis
2003-03-05 18:52   ` Matt Austern
2003-03-05 21:20     ` Toon Moene
2003-03-05 21:28 ` tm_gccmail
2003-03-05 21:29   ` Fabio Alemagna
2003-03-05 22:12   ` Karel Gardas
2003-03-06 12:39     ` Andrew Haley
2003-03-06  7:58   ` Lars Segerlund
2003-03-06 11:47     ` Vladimir Merzliakov
2003-03-05 21:07 Benjamin Kosnik
2003-03-05 22:18 ` Zack Weinberg
2003-03-06  9:13   ` Olivier Galibert
2003-03-06 11:08   ` Richard Earnshaw
2003-03-06 17:27   ` Alexandre Oliva
2003-03-05 22:42 Chris Lattner
2003-03-05 23:03 Robert Dewar
2003-03-06  7:18 ` Gabriel Dos Reis
2003-03-06  7:53 ` Karel Gardas
2003-03-06  9:17   ` Gabriel Dos Reis
2003-03-06 17:25 ` Alexandre Oliva
2003-03-06 22:23   ` Michael Matz
2003-03-06 22:30     ` Karel Gardas
2003-03-06 22:52     ` Gabriel Dos Reis
2003-03-06 23:31       ` Michael Matz
2003-03-06 17:17 Joern Rennecke
2003-03-06 18:25 ` Richard Earnshaw
2003-03-07 19:04   ` Toon Moene
2003-03-06 20:23 Tim Josling
2003-03-06 20:36 Nathanael Nerode
2003-03-08 19:00 Robert Dewar
2003-03-08 19:23 Robert Dewar

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=3E67FBA6.1000907@bothner.com \
    --to=per@bothner.com \
    --cc=gcc@gcc.gnu.org \
    --cc=tromey@redhat.com \
    /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).