head	1.1;
branch	1.1.1;
access;
symbols
	RELENG_8_4:1.1.1.6.0.30
	RELENG_9_1_0_RELEASE:1.1.1.6
	RELENG_9_1:1.1.1.6.0.28
	RELENG_9_1_BP:1.1.1.6
	RELENG_8_3_0_RELEASE:1.1.1.6
	RELENG_8_3:1.1.1.6.0.26
	RELENG_8_3_BP:1.1.1.6
	RELENG_9_0_0_RELEASE:1.1.1.6
	RELENG_9_0:1.1.1.6.0.24
	RELENG_9_0_BP:1.1.1.6
	RELENG_9:1.1.1.6.0.22
	RELENG_9_BP:1.1.1.6
	RELENG_7_4_0_RELEASE:1.1.1.6
	RELENG_8_2_0_RELEASE:1.1.1.6
	RELENG_7_4:1.1.1.6.0.20
	RELENG_7_4_BP:1.1.1.6
	RELENG_8_2:1.1.1.6.0.18
	RELENG_8_2_BP:1.1.1.6
	RELENG_8_1_0_RELEASE:1.1.1.6
	RELENG_8_1:1.1.1.6.0.16
	RELENG_8_1_BP:1.1.1.6
	RELENG_7_3_0_RELEASE:1.1.1.6
	RELENG_7_3:1.1.1.6.0.14
	RELENG_7_3_BP:1.1.1.6
	RELENG_8_0_0_RELEASE:1.1.1.6
	RELENG_8_0:1.1.1.6.0.12
	RELENG_8_0_BP:1.1.1.6
	RELENG_8:1.1.1.6.0.10
	RELENG_8_BP:1.1.1.6
	RELENG_7_2_0_RELEASE:1.1.1.6
	RELENG_7_2:1.1.1.6.0.8
	RELENG_7_2_BP:1.1.1.6
	RELENG_7_1_0_RELEASE:1.1.1.6
	RELENG_6_4_0_RELEASE:1.1.1.5
	RELENG_7_1:1.1.1.6.0.6
	RELENG_7_1_BP:1.1.1.6
	RELENG_6_4:1.1.1.5.0.22
	RELENG_6_4_BP:1.1.1.5
	RELENG_7_0_0_RELEASE:1.1.1.6
	RELENG_6_3_0_RELEASE:1.1.1.5
	RELENG_7_0:1.1.1.6.0.4
	RELENG_7_0_BP:1.1.1.6
	RELENG_6_3:1.1.1.5.0.20
	RELENG_6_3_BP:1.1.1.5
	RELENG_7:1.1.1.6.0.2
	RELENG_7_BP:1.1.1.6
	gcc_4_2_1_20070718_SVN126787:1.1.1.6
	gcc_4_2_0_20070514_SVN124707:1.1.1.6
	RELENG_6_2_0_RELEASE:1.1.1.5
	RELENG_6_2:1.1.1.5.0.18
	RELENG_6_2_BP:1.1.1.5
	gcc_3_4_6_20060825_SVN116475:1.1.1.5
	RELENG_5_5_0_RELEASE:1.1.1.5
	RELENG_5_5:1.1.1.5.0.16
	RELENG_5_5_BP:1.1.1.5
	RELENG_6_1_0_RELEASE:1.1.1.5
	RELENG_6_1:1.1.1.5.0.14
	RELENG_6_1_BP:1.1.1.5
	RELENG_6_0_0_RELEASE:1.1.1.5
	RELENG_6_0:1.1.1.5.0.12
	RELENG_6_0_BP:1.1.1.5
	RELENG_6:1.1.1.5.0.10
	RELENG_6_BP:1.1.1.5
	gcc_3_4_4_20050518:1.1.1.5
	RELENG_5_4_0_RELEASE:1.1.1.5
	RELENG_5_4:1.1.1.5.0.8
	RELENG_5_4_BP:1.1.1.5
	RELENG_4_11_0_RELEASE:1.1.1.2
	RELENG_4_11:1.1.1.2.0.20
	RELENG_4_11_BP:1.1.1.2
	RELENG_5_3_0_RELEASE:1.1.1.5
	RELENG_5_3:1.1.1.5.0.6
	RELENG_5_3_BP:1.1.1.5
	RELENG_5:1.1.1.5.0.4
	RELENG_5_BP:1.1.1.5
	gcc_3_4_2_20040728:1.1.1.5
	RELENG_4_10_0_RELEASE:1.1.1.2
	RELENG_4_10:1.1.1.2.0.18
	RELENG_4_10_BP:1.1.1.2
	RELENG_5_2_1_RELEASE:1.1.1.5
	RELENG_5_2_0_RELEASE:1.1.1.5
	RELENG_5_2:1.1.1.5.0.2
	RELENG_5_2_BP:1.1.1.5
	gcc_3_3_3_20031106:1.1.1.5
	RELENG_4_9_0_RELEASE:1.1.1.2
	RELENG_4_9:1.1.1.2.0.16
	RELENG_4_9_BP:1.1.1.2
	gcc_3_3_1:1.1.1.5
	gcc_3_3_1_20030711:1.1.1.5
	RELENG_5_1_0_RELEASE:1.1.1.4
	RELENG_5_1:1.1.1.4.0.4
	RELENG_5_1_BP:1.1.1.4
	RELENG_4_8_0_RELEASE:1.1.1.2
	RELENG_4_8:1.1.1.2.0.14
	RELENG_4_8_BP:1.1.1.2
	gcc_3_2_2_20030205:1.1.1.4
	RELENG_5_0_0_RELEASE:1.1.1.4
	RELENG_5_0:1.1.1.4.0.2
	RELENG_5_0_BP:1.1.1.4
	gcc_3_2_1:1.1.1.4
	BEFORE_GCC_3_2_1:1.1.1.4
	gcc_3_2_anoncvs_20021009:1.1.1.4
	RELENG_4_7_0_RELEASE:1.1.1.2
	RELENG_4_7:1.1.1.2.0.12
	RELENG_4_7_BP:1.1.1.2
	gcc_3_2_anoncvs_20020916:1.1.1.4
	gcc_3_2_anoncvs_20020901:1.1.1.4
	RELENG_4_6_2_RELEASE:1.1.1.2
	RELENG_4_6_1_RELEASE:1.1.1.2
	RELENG_4_6_0_RELEASE:1.1.1.2
	RELENG_4_6:1.1.1.2.0.10
	RELENG_4_6_BP:1.1.1.2
	gcc_3_1_anoncvs_20020509:1.1.1.3
	gcc_cvs_20020201_0820:1.1.1.3
	BEFORE_3_1_0_snap:1.1.1.2
	RELENG_4_5_0_RELEASE:1.1.1.2
	RELENG_4_5:1.1.1.2.0.8
	RELENG_4_5_BP:1.1.1.2
	gcc_2_95_3_with_sjlj_fix:1.1.1.2
	GCC_2_95_3_WITH_FBSD_MODS:1.1.1.2
	gcc_2_95_3:1.1.1.2
	gcc_2_95_3_test3:1.1.1.2
	gcc_2_95_3_test1:1.1.1.2
	REPOCOPY:1.1.1.2
	RELENG_4_4_0_RELEASE:1.1.1.2
	RELENG_4_4:1.1.1.2.0.6
	RELENG_4_4_BP:1.1.1.2
	RELENG_4_3_0_RELEASE:1.1.1.2
	RELENG_4_3:1.1.1.2.0.4
	RELENG_4_3_BP:1.1.1.2
	BEFORE_GCC_2_95_3:1.1.1.2
	RELENG_4_2_0_RELEASE:1.1.1.2
	RELENG_4_1_1_RELEASE:1.1.1.2
	RELENG_4_1_0_RELEASE:1.1.1.2
	RELENG_4_0_0_RELEASE:1.1.1.2
	RELENG_4:1.1.1.2.0.2
	RELENG_4_BP:1.1.1.2
	EGCS_11x:1.1.1.1.0.2
	gcc_2_95_2:1.1.1.2
	BEFORE_GCC_2_95_1:1.1.1.1
	gcc_2_95_1:1.1.1.2
	egcs_1_1_2:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	99.08.26.09.26.20;	author obrien;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	99.08.26.09.26.20;	author obrien;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	99.10.16.06.01.34;	author obrien;	state Exp;
branches;
next	1.1.1.3;

1.1.1.3
date	2002.02.01.18.12.23;	author obrien;	state Exp;
branches;
next	1.1.1.4;

1.1.1.4
date	2002.05.13.03.35.46;	author obrien;	state Exp;
branches;
next	1.1.1.5;

1.1.1.5
date	2003.07.11.03.40.48;	author kan;	state Exp;
branches;
next	1.1.1.6;

1.1.1.6
date	2007.05.19.01.12.12;	author kan;	state Exp;
branches
	1.1.1.6.30.1;
next	;

1.1.1.6.30.1
date	2007.05.19.01.12.12;	author svnexp;	state dead;
branches;
next	1.1.1.6.30.2;

1.1.1.6.30.2
date	2013.03.28.13.00.47;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@Right now there is no documentation for the GCC tree -> rtl interfaces
(or more generally the interfaces for adding new languages).

Such documentation would be of great benefit to the project.  Until such
time as we can formally start documenting the interface this file will
serve as a repository for information on these interface and any incompatable
changes we've made.

Jun 10, 1998:
  The interface to lang_decode_option has changed. It now uses and argc/argv
  interface to allow for options that use more than one input string. The new
  declaration is: int lang_decode_option (int argc, char** argv). It now
  returns the number of input strings processed, or 0 if the option is
  unknown.

Jun  7, 1998:
  Front-ends must now define lang_init_options.  It is safe for this
  function to do nothing.  See c-lang.c.

Apr 21, 1998:
  Front ends which link with c-common or other files from the C/C++
  front-ends may need to handle TI types.  Look for references to
  [unsigned]int_DI_type_node in your front end.  If you have references
  to these variables, you'll need up update the front end.

  To update the front end you must mirror all the code which currently
  deals with intDI_type_node to also handle intTI_type_node.


Apr 7, 1998:
  The interface between toplev.c and the language front ends for opening the
  source file has changed:

  o init_lex() has been renamed to init_parse (char *filename) where filename
    is the name of the source file.
  o The code in toplev.c which opened the source file should be moved to
    the new init_parse function.
  o toplev.c now calls finish_parse() instead of closing the source file
    using fclose(). This should now be done in finish_parse, if necessary.

Apr 1, 1998:
  Front-ends must now define lang_print_xnode.  It is safe for this
  function to do nothing.  See c-lang.c.

Feb 1, 1998:

  GCC used to store structure sizes & offsets to elements as bitsize
  quantities.  This causes problems because a structure can only be
  (target memsize / 8) bytes long (this may effect arrays too).  This
  is particularly problematical on machines with small address spaces.

  So:

    All trees that represent sizes in bits should have a TREE_TYPE of
    bitsizetype (rather than sizetype).

    Accordingly, when such values are computed / initialized, care has to
    be takes to use / compute the proper type.

    When a size in bits is converted into a size in bytes, which is expressed
    in trees, care should be taken to change the tree's type again to sizetype.

    We've updated C, C++, Fortran & Objective-C to work with the new
    scheme.  Other languages will need to be updated accordingly.
    Contact amylaar@@cygnus.com for additional information.

?? 1997:

  In an effort to decrease cache thrashing and useless loads we've changed the
  third argument to the DEFTREECODE macro to be a single char.  This will
  effect languages that defined their own tree codes (usually in a .def file).

  Old way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", "d", 0)

  New way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
@


1.1.1.1
log
@Virgin import of gcc from EGCS 1.1.2
@
text
@@


1.1.1.2
log
@Virgin import of the GCC 2.95.1 compilers
@
text
@a8 12
Aug 31, 1998:
  The interface to HANDLE_PRAGMA has changed.  It now takes three arguments.
  The first two are pointers to functions that should be used to read characters
  from the input stream, and to push them back into the input stream respectively.
  The third argument is a pointer to a null terminate string which is the first
  word after #pragma.  The expression supplied by HANDLE_PRAGMA should return
  non-zero if it parsed and implemented the pragma.  Otherwise it should return
  zero, and leave the input stream as it was before the expression was evaluated.

  A new back-end definable macro has been added: INSERT_ATTRIBUTES.  This macro
  allows backend to add attributes to decls as they are created.

@


1.1.1.3
log
@Enlist the FreeBSD-CURRENT users as testers of what is to become Gcc 3.1.0.
These bits are taken from the FSF anoncvs repo on 1-Feb-2002 08:20 PST.
@
text
@a8 6
2001-02-26:
  A DECL_INITIAL of NULL_TREE or error_mark_node in a VAR_DECL is no longer
  taken to signify a tentative definition which should not be emitted until
  end-of-file.  Frontends which want that behavior should set
  DECL_DEFER_OUTPUT before calling rest_of_decl_compilation.

d83 1
a83 1
  affect languages that defined their own tree codes (usually in a .def file).
@


1.1.1.4
log
@Cause CVS to sync up checked out source bases with Gcc 3.1 bits after
the repo surgery to cut out the abortive Gcc 2.9[67] imports.
@
text
@@


1.1.1.5
log
@Gcc 3.3.1-pre as of 2003-07-11.
@
text
@d21 1
a21 1
  nonzero if it parsed and implemented the pragma.  Otherwise it should return
@


1.1.1.6
log
@GCC 4.2.0 release.
@
text
@a8 12
2004-09-09:
  In an effort to decrease execution time, single char tree code
  classes were changed to enumerated values.

  Old way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)

  New way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", tcc_declaration, 0)

d15 48
d81 4
@


1.1.1.6.30.1
log
@file LANGUAGES was added on branch RELENG_8_4 on 2013-03-28 13:00:47 +0000
@
text
@d1 57
@


1.1.1.6.30.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 57
Right now there is no documentation for the GCC tree -> rtl interfaces
(or more generally the interfaces for adding new languages).

Such documentation would be of great benefit to the project.  Until such
time as we can formally start documenting the interface this file will
serve as a repository for information on these interface and any incompatable
changes we've made.

2004-09-09:
  In an effort to decrease execution time, single char tree code
  classes were changed to enumerated values.

  Old way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)

  New way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", tcc_declaration, 0)

2001-02-26:
  A DECL_INITIAL of NULL_TREE or error_mark_node in a VAR_DECL is no longer
  taken to signify a tentative definition which should not be emitted until
  end-of-file.  Frontends which want that behavior should set
  DECL_DEFER_OUTPUT before calling rest_of_decl_compilation.

Feb 1, 1998:

  GCC used to store structure sizes & offsets to elements as bitsize
  quantities.  This causes problems because a structure can only be
  (target memsize / 8) bytes long (this may effect arrays too).  This
  is particularly problematical on machines with small address spaces.

  So:

    All trees that represent sizes in bits should have a TREE_TYPE of
    bitsizetype (rather than sizetype).

    Accordingly, when such values are computed / initialized, care has to
    be takes to use / compute the proper type.

    When a size in bits is converted into a size in bytes, which is expressed
    in trees, care should be taken to change the tree's type again to sizetype.

?? 1997:

  In an effort to decrease cache thrashing and useless loads we've changed the
  third argument to the DEFTREECODE macro to be a single char.  This will
  affect languages that defined their own tree codes (usually in a .def file).

  Old way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", "d", 0)

  New way:

    DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
@


