From 8653acb191473126baa409d929841fe9fed3c734 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 29 Jan 2010 16:37:20 -0800 Subject: [PATCH] The gccgo frontend has moved to a new repository. Update the documents accordingly. Also document gccgo specific options. R=r CC=golang-dev https://golang.org/cl/196070 --- doc/gccgo_contribute.html | 70 ++++++++++++++++++++++----------------- doc/gccgo_install.html | 41 +++++++++++++++++++++-- 2 files changed, 78 insertions(+), 33 deletions(-) diff --git a/doc/gccgo_contribute.html b/doc/gccgo_contribute.html index 844f676d805..cab6967f369 100644 --- a/doc/gccgo_contribute.html +++ b/doc/gccgo_contribute.html @@ -21,26 +21,40 @@ rules.

Code

-The source code for the gccgo frontend may be found in -the directory gcc/go. The frontend is written in C++ and -as such the GNU coding standards do not entirely apply; in writing -code for the frontend, follow the formatting of the surrounding code. -Although the frontend is currently closely tied to the rest of the gcc -codebase, we plan to make it more independent. Any new code which -uses other parts of gcc should be segregated in an appropriate file, -such as gogo-tree.cc. +The source code for the gccgo frontend may be found at +http://code.google.com/p/gofrontend. +Changes made to that project are routinely merged into the source code +hosted at gcc.gnu.org. The gofrontend +project includes only the Go frontend proper. These are the files +which in the gcc sources may be found in the +directories gcc/go and libgo. +The gcc sources also include a copy of +the test directory +from the main Go repository. + +

+The frontend is written in C++ and as such the GNU coding standards do +not entirely apply; in writing code for the frontend, follow the +formatting of the surrounding code. Although the frontend is +currently closely tied to the rest of the gcc codebase, +we plan to make it more independent. Any new code that uses other +parts of gcc should be placed in an appropriate file, +such as gogo-tree.cc. Eventually +all gcc-specific code should migrate to +a gcc-interface subdirectory.

The runtime library for gccgo is mostly the same as the -library in the main Mercurial repository. The library code in the -Mercurial repository is periodically copied into -the gccgo repository. Accordingly, most library changes -should be made in Mercurial. Changes to the few gccgo -specific parts of the library should follow the process described -here. The gccgo specific parts of the library are -everything in the libgo directory except for -the libgo/go subdirectory. +library in the main Go +repository. The library code in the Go repository is periodically +copied into the gofrontend and the gcc +repositories. Accordingly, most library changes should be made in the +main Go repository. Changes to the few gccgo-specific +parts of the library should follow the process described here. +The gccgo-specific parts of the library are everything in +the libgo directory except for the libgo/go +subdirectory.

Testing

@@ -54,8 +68,8 @@ introduces new failures is not acceptable. To run the compiler test suite, run make check-go in the gcc subdirectory of your build directory. This will run various tests underneath gcc/testsuite/go.*. This -includes a copy of the tests in the Mercurial repository, which are -run using the DejaGNU script found in +includes a copy of the tests in the main Go repository, which are run +using the DejaGNU script found in in gcc/testsuite/go.test/go-test.exp. Many of the compiler tests may be run without the Go library, but some do require the library to built first. @@ -67,25 +81,19 @@ check-target-libgo in the top level of your build directory.

-Most new tests should be submitted to the Mercurial repository for +Most new tests should be submitted to the main Go repository for copying into the gccgo repository. If there is a need for specific tests for gccgo, they should go in the gcc/testsuite/go.go-torture -or gcc/testsuite/go.dg directories. +or gcc/testsuite/go.dg directories in +the gcc.gnu.org repository.

Submitting Changes

-Proposing a patch should follow the standard GCC rules. That is, the -patch should be sent to the mailing -list gcc-patches@gcc.gnu.org as a diff—the output -of the diff program with the -c -or -u option. In the future we are likely to set up a -separate gccgo-specific mailing list, which should also be CC'ed; we -will update this document at that time. Patch emails should include a -ChangeLog entry, though the ChangeLog entry should not be in the diff -itself. ChangeLog files are a standard part of GNU programs; see -the -GNU coding standards. +Changes to the Go frontend should follow the same process as for the +main Go repository, only for the gofrontend project +rather than the go project. Those changes will then be +merged into the gcc sources.

diff --git a/doc/gccgo_install.html b/doc/gccgo_install.html index 5766f91142a..3ffd6a64570 100644 --- a/doc/gccgo_install.html +++ b/doc/gccgo_install.html @@ -27,6 +27,15 @@ is a branch of the main gcc code repository: svn://gcc.gnu.org/svn/gcc/branches/gccgo.

+

+Note that although gcc.gnu.org is the most convenient way +to get the source code for the compiler, that is not where the master +sources live. If you want to contribute changes to the gccgo +compiler, see Contributing to +gccgo. +

+ +

Building

@@ -139,6 +148,32 @@ future the requirement of explicitly specifying may be removed. +

Options

+ +

+The gccgo compiler supports all gcc options +that are language independent, notably the -O +and -g options. + +

+The -fgo-prefix=PREFIX option may be used to set a unique +prefix for the package being compiled. This option is intended for +use with large programs that contain many packages, in order to allow +multiple packages to use the same identifier as the package name. +The PREFIX may be any string; a good choice for the +string is the directory where the package will be installed. + +

+The -fno-require-return-statement option may be used to +disable the compiler error about functions missing return statements. +Note that there is no way to disable this error in 6g. + +

+The -I and -L options, which are synonyms +for the compiler, may be used to set the search path for finding +imports. + +

Imports

@@ -195,8 +230,10 @@ Some Go features are not yet implemented in gccgo. As of

  • Garbage collection is not implemented. There is no way to free memory. Thus long running programs are not supported. -
  • goroutines are implemented as NPTL threads with a fixed stack size. - The number of goroutines that may be created at one time is limited. +
  • goroutines are implemented as NPTL threads. If you can not use + the gold linker as described above, they are created with a fixed + stack size, and the number of goroutines that may be created at + one time is limited.

    Debugging