This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: G++ for CygWin


> -----Original Message-----
> From: cygwin-owner  On Behalf Of Gerrit P. Haase

> Hello Dave,

  Hiya!

> >   Your use of "frontend" to describe the generic compiler 
> drivers, and 
> > "backend" to describe the actual language-specific compilers 
> > themselves is at odds with the standard usage everywhere on 
> > gcc.gnu.org, related mailing lists, and throughout the gcc 
> documentation.
> 
> I didn't use the word 'stand-alone'.  

  Well, you didn't, but you implied that frontends and backends were things
that could be installed and distributed separately from each other.  And
there's no coherent definition of those two words that makes that possible.
Read on:

> There is a common 
> backend, and several language specific front ends.

  Yeh?  What files in the gcc-core distribution would you claim implement
this "common backend" ?  In what way are these files used by (e.g.) the java
or c++ frontends ?  I don't think you could provide a meaningful answer to
this question.  You are speaking as if you think that the different language
compilers do a bit of parsing and then hand off some intermediate result to
some executable that comes with your core distro.  That simply doesn't
happen.  In fact, the same 'backend' is repeatedly included in *every*
different language compiler.
 
> >   I thought I'd explained why I say that clearly enough in my last 
> > post, but I guess it needs clarifying: it is a misuse of existing 
> > terminology that will cause confusion if continued.
> 
> I use the terms that are also used at the GCC website?
> 
> "Currently the main GCC distribution contains front ends for C (gcc),
> C++ (g++), Objective C, Fortran (g77), Java (GCJ), and Ada (GNAT)."
> 
> from:
> http://gcc.gnu.org/frontends.html

  Well, it seems that they've been using the word with both meanings
themselves!  But if you look at the gcc internals documentation:

http://gcc.gnu.org/onlinedocs/gccint/

you see that it refers to frontends as the things that deal with the
language and parse it, and backends as the things that convert the
language-agnostic representation to a specific architecture.

> Backend describes architectures supported by GCC:
> http://gcc.gnu.org/backends.html

  Given that definition, how on earth could you distribute "an architecture
supported by gcc" ?  I'd like to see you build a distribution that contained
only a backend!  You said:

> These smaller packages are gcc-core which includes the backend and the 
> C-frontend and the other small packages include the other frontends.
> Cygwin GCC comes in addition to these packages with a pascal frontend.

  That statement is simply not coherent, even under your alternative
definition of frontends and backends.

-- with your definition, where "frontend" == "the driver program such as
gcc.exe or g++.exe" and backend == "the actual compiler", you'd be saying
that gcc-core contains gcc.exe and cc1.exe, and that (for example) the g++
package contained only g++.exe but not cc1plus.exe.  That wouldn't be any
use!

-- or if you define "frontend" == "the driver program such as gcc.exe or
g++.exe" and backend == "the architecture supported by gcc", you'd be saying
that the g++ package you offer doesn't support any architecture.  That's not
true: it contains an executable called cc1plus.exe that accepts C++ input
and generates i686-pc-cygwin output.

-- with the standard definitions, you'd be saying that you were distributing
cc1.exe broken into two parts, and the other packages contained e.g. part of
cc1plus.exe.

-- either way, there's no such thing as "the" backend.  Your G++ package
contains a driver (g++.exe) and a compiler (cc1plus.exe), which in turn is
composed of a frontend and a backend.  If you want to call the driver the
frontend, and the compiler the backend, then you must concede that your
other small packages contain *both* frontends and backends.

-- you could be using "frontend" to refer to the combination of
driver-plus-compiler, which would make sense of your description of the g++
package as containing the C++ frontend, but then that doesn't leave
*anything at all* left over to be referred to as the backend!

  I accept that the frontends page at the gcc website is imprecise and blurs
the definitions, but I'd still like to see you write two simple definitions
of "frontend" and "backend" that make your paragraph meaningful; I don't
think there could be any.




    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....
 


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]