From 2afcc6c3c1fd215b6a2147a2baeb83ebb277246f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 6 Feb 2019 16:28:31 +0000 Subject: [PATCH] README: update text to describe current status Reviewed-on: https://go-review.googlesource.com/c/161338 From-SVN: r268584 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/README | 55 +++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 3220671ad421..100d30e2c738 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -347628daf153baf3034b61b2abb4ec39e2ab37c8 +74ffeddbe6fef446129af65581b3a9094715bc22 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/README b/gcc/go/gofrontend/README index b139194b0eb0..f6f94561eea3 100644 --- a/gcc/go/gofrontend/README +++ b/gcc/go/gofrontend/README @@ -1,52 +1,55 @@ See ../README. -The frontend is written in C++. +The frontend is written in C++. It can only be used in conjunction +with a full compiler backend. Currently the backend interface has +been implemented with GCC (known as gccgo) and with LLVM (known as +GoLLVM). The frontend lexes and parses the input into an IR specific to this frontend known as gogo. It then runs a series of passes over the code. -Finally it converts gogo to gcc's GENERIC. A goal is to move the gcc -support code into a gcc-interface subdirectory. The gcc code will be -put under the GPL. The rest of the frontend will not include any gcc -header files. +Finally it converts gogo to the backend IR. This is done via the +interface described in backend.h. The backend must implement that +interface. When used with GCC, the interface is implemented in +gcc/go/go-gcc.cc. -Issues to be faced in this transition: +Source locations are represented using the interface described in +go-linemap.h. The backend is expected to provide a header file +go-location.h that defines a Location type. -* Representation of source locations. - + Currently the frontend uses gcc's location_t codes, using the - interface in libcpp/line-map.h. +The frontend does not start by itself. It expects something to call +go_create_gogo passing in a Backend and a Linemap, as well as other +options. Then it expects something to call go_parse_input_files +passing in the input files. Finally, a call to go_write_globals will +cause all global definitions to be written out via the Backend +interface. -* Handling of error messages. - + Currently the frontend uses gcc's error_at and warning_at - functions. - + Currently the frontend uses gcc's diagnostic formatter, using - features such as %<%> for appropriate quoting. - + Localization may be an issue. +The backend is expected to provide the functions defined at the +bottom of go-diagnostics.h: go_be_error_at, etc. These will be used +for error messages. -This compiler works, but the code is a work in progress. Notably, the -support for garbage collection is ineffective and needs a complete -rethinking. The frontend pays little attention to its memory usage -and rarely frees any memory. The code could use a general cleanup -which we have not had time to do. +This compiler works, but the code is a work in progress. The frontend +pays little attention to its memory usage and rarely frees any memory. +The code could use a general cleanup which we have not had time to do. Contributing ============= To contribute patches to the files in this directory, please see -http://golang.org/doc/gccgo_contribute.html . +https://golang.org/doc/gccgo_contribute.html . The master copy of these files is hosted at -http://code.google.com/p/gofrontend . Changes to these files require +https://go.googlesource.com/gofrontend . There is a mirror at +https://github.com/golang/gofrontend . Changes to these files require signing a Google contributor license agreement. If you are the copyright holder, you will need to agree to the individual contributor -license agreement at -http://code.google.com/legal/individual-cla-v1.0.html. This agreement -can be completed online. +https://cla.developers.google.com/about/google-individual . This +agreement can be completed online. If your organization is the copyright holder, the organization will need to agree to the corporate contributor license agreement at -http://code.google.com/legal/corporate-cla-v1.0.html. +https://cla.developers.google.com/about/google-corporate . If the copyright holder for your code has already completed the agreement in connection with another Google open source project, it -- 2.43.5