Require target lra in gcc.dg/pr108095.c
[official-gcc.git] / gcc / go / gofrontend / README
blobf6f94561eea3cc11539061ea90dccfdc73f702f4
1 See ../README.
3 The frontend is written in C++.  It can only be used in conjunction
4 with a full compiler backend.  Currently the backend interface has
5 been implemented with GCC (known as gccgo) and with LLVM (known as
6 GoLLVM).
8 The frontend lexes and parses the input into an IR specific to this
9 frontend known as gogo.  It then runs a series of passes over the
10 code.
12 Finally it converts gogo to the backend IR.  This is done via the
13 interface described in backend.h.  The backend must implement that
14 interface.  When used with GCC, the interface is implemented in
15 gcc/go/go-gcc.cc.
17 Source locations are represented using the interface described in
18 go-linemap.h.  The backend is expected to provide a header file
19 go-location.h that defines a Location type.
21 The frontend does not start by itself.  It expects something to call
22 go_create_gogo passing in a Backend and a Linemap, as well as other
23 options.  Then it expects something to call go_parse_input_files
24 passing in the input files.  Finally, a call to go_write_globals will
25 cause all global definitions to be written out via the Backend
26 interface.
28 The backend is expected to provide the functions defined at the
29 bottom of go-diagnostics.h: go_be_error_at, etc.  These will be used
30 for error messages.
32 This compiler works, but the code is a work in progress.  The frontend
33 pays little attention to its memory usage and rarely frees any memory.
34 The code could use a general cleanup which we have not had time to do.
36 Contributing
37 =============
39 To contribute patches to the files in this directory, please see
40 https://golang.org/doc/gccgo_contribute.html .
42 The master copy of these files is hosted at
43 https://go.googlesource.com/gofrontend .  There is a mirror at
44 https://github.com/golang/gofrontend .  Changes to these files require
45 signing a Google contributor license agreement.  If you are the
46 copyright holder, you will need to agree to the individual contributor
47 https://cla.developers.google.com/about/google-individual .  This
48 agreement can be completed online.
50 If your organization is the copyright holder, the organization will
51 need to agree to the corporate contributor license agreement at
52 https://cla.developers.google.com/about/google-corporate .
54 If the copyright holder for your code has already completed the
55 agreement in connection with another Google open source project, it
56 does not need to be completed again.