diff options
-rw-r--r-- | gcc/go/gofrontend/types.cc | 11 | ||||
-rw-r--r-- | gcc/go/gofrontend/types.h | 24 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 2935523..2148a1a 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -4066,6 +4066,17 @@ Type::make_function_type(Typed_identifier* receiver, return new Function_type(receiver, parameters, results, location); } +// Make a backend function type. + +Backend_function_type* +Type::make_backend_function_type(Typed_identifier* receiver, + Typed_identifier_list* parameters, + Typed_identifier_list* results, + Location location) +{ + return new Backend_function_type(receiver, parameters, results, location); +} + // Class Pointer_type. // Traversal. diff --git a/gcc/go/gofrontend/types.h b/gcc/go/gofrontend/types.h index 980436a..5fda4e7 100644 --- a/gcc/go/gofrontend/types.h +++ b/gcc/go/gofrontend/types.h @@ -19,6 +19,7 @@ class Float_type; class Complex_type; class String_type; class Function_type; +class Backend_function_type; class Struct_field; class Struct_field_list; class Struct_type; @@ -484,6 +485,12 @@ class Type Typed_identifier_list* results, Location); + static Backend_function_type* + make_backend_function_type(Typed_identifier* receiver, + Typed_identifier_list* parameters, + Typed_identifier_list* results, + Location); + static Pointer_type* make_pointer_type(Type*); @@ -1896,6 +1903,23 @@ class Function_type : public Type Btype* fnbtype_; }; +// The type of a function's backend representation. + +class Backend_function_type : public Function_type +{ + public: + Backend_function_type(Typed_identifier* receiver, + Typed_identifier_list* parameters, + Typed_identifier_list* results, Location location) + : Function_type(receiver, parameters, results, location) + { } + + protected: + Btype* + do_get_backend(Gogo* gogo) + { return this->get_backend_fntype(gogo); } +}; + // The type of a pointer. class Pointer_type : public Type |