diff options
author | Than McIntosh <thanm@google.com> | 2016-10-11 00:11:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-10-11 00:11:43 +0000 |
commit | 3c061ac0525eebec030eee46aab6671023177eea (patch) | |
tree | 2cb8646afabaf58b7f77d2990aa7cd375f662850 /gcc/go/gofrontend | |
parent | abe08b7d909d27884e9f5f2cb879739e2c909106 (diff) | |
download | gcc-3c061ac0525eebec030eee46aab6671023177eea.zip gcc-3c061ac0525eebec030eee46aab6671023177eea.tar.gz gcc-3c061ac0525eebec030eee46aab6671023177eea.tar.bz2 |
compiler: move Backend/Linemap creation out of front end.
Push the calls to create Backend and Linemap object out
of the front end into the back end, and instead pass pointers to
these objects in the go_create_gogo_args struct. This allows
for more flexibility in the interfaces used to create the
objects.
Reviewed-on: https://go-review.googlesource.com/30698
* go-gcc.h: New file.
* go-c.h (struct go_create_gogo_args): Add backend and linemap
fields.
* go-lang.c: Include "go-gcc.h".
(go_langhook_init): Set linemap and backend fields of args.
* go-gcc.cc: Include "go-gcc.h".
* go-linemap.cc: Include "go-gcc.h".
From-SVN: r240959
Diffstat (limited to 'gcc/go/gofrontend')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/backend.h | 4 | ||||
-rw-r--r-- | gcc/go/gofrontend/go-linemap.h | 4 | ||||
-rw-r--r-- | gcc/go/gofrontend/go.cc | 3 |
4 files changed, 2 insertions, 11 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index c987dc9..66b1b85 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -ecf9b645cefc5c3b4e6339adeb452b2d8642cf3e +a700fa1908aa2a36f05b3ee09932f814fd94a10d 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/backend.h b/gcc/go/gofrontend/backend.h index 3b9d3a6..8c45b64 100644 --- a/gcc/go/gofrontend/backend.h +++ b/gcc/go/gofrontend/backend.h @@ -740,8 +740,4 @@ class Backend const std::vector<Bvariable*>& variable_decls) = 0; }; -// The backend interface has to define this function. - -extern Backend* go_get_backend(); - #endif // !defined(GO_BACKEND_H) diff --git a/gcc/go/gofrontend/go-linemap.h b/gcc/go/gofrontend/go-linemap.h index f0ca99d..704efdb 100644 --- a/gcc/go/gofrontend/go-linemap.h +++ b/gcc/go/gofrontend/go-linemap.h @@ -149,8 +149,4 @@ class Linemap } }; -// The backend interface must define this function. It should return -// a fully implemented instance of Linemap. -extern Linemap* go_get_linemap(); - #endif // !defined(GO_LINEMAP_H) diff --git a/gcc/go/gofrontend/go.cc b/gcc/go/gofrontend/go.cc index 927f29d..e0e84e3 100644 --- a/gcc/go/gofrontend/go.cc +++ b/gcc/go/gofrontend/go.cc @@ -24,8 +24,7 @@ void go_create_gogo(const struct go_create_gogo_args* args) { go_assert(::gogo == NULL); - Linemap* linemap = go_get_linemap(); - ::gogo = new Gogo(go_get_backend(), linemap, args->int_type_size, + ::gogo = new Gogo(args->backend, args->linemap, args->int_type_size, args->pointer_size); if (args->pkgpath != NULL) |