aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/unsafe.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-07-31 19:28:51 -0700
committerIan Lance Taylor <iant@golang.org>2021-08-02 13:56:28 -0700
commit06d0437d4a5faca2b695918cbe1d54a61935c98b (patch)
tree81cc666b16c30384b39469f246c1ec304a4a4e72 /gcc/go/gofrontend/unsafe.cc
parent14d8a5ae472ca5743016f37da2dd4770d83dea21 (diff)
downloadgcc-06d0437d4a5faca2b695918cbe1d54a61935c98b.zip
gcc-06d0437d4a5faca2b695918cbe1d54a61935c98b.tar.gz
gcc-06d0437d4a5faca2b695918cbe1d54a61935c98b.tar.bz2
compiler, runtime: support unsafe.Add and unsafe.Slice
For golang/go#19367 For golang/go#40481 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/338949
Diffstat (limited to 'gcc/go/gofrontend/unsafe.cc')
-rw-r--r--gcc/go/gofrontend/unsafe.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/unsafe.cc b/gcc/go/gofrontend/unsafe.cc
index 9ed5b9d..18bd99e 100644
--- a/gcc/go/gofrontend/unsafe.cc
+++ b/gcc/go/gofrontend/unsafe.cc
@@ -86,6 +86,22 @@ Gogo::import_unsafe(const std::string& local_name, bool is_local_name_exported,
if (add_to_globals)
this->add_dot_import_object(no);
+ // Add.
+ results = new Typed_identifier_list;
+ results->push_back(Typed_identifier("", pointer_type, bloc));
+ fntype = Type::make_function_type(NULL, NULL, results, bloc);
+ fntype->set_is_builtin();
+ no = bindings->add_function_declaration("Add", package, fntype, bloc);
+ if (add_to_globals)
+ this->add_dot_import_object(no);
+
+ // Slice.
+ fntype = Type::make_function_type(NULL, NULL, NULL, bloc);
+ fntype->set_is_builtin();
+ no = bindings->add_function_declaration("Slice", package, fntype, bloc);
+ if (add_to_globals)
+ this->add_dot_import_object(no);
+
if (!this->imported_unsafe_)
{
go_imported_unsafe();