Commit 967d49d1 by Ian Lance Taylor

compiler: Add Backend Function type.

From-SVN: r206611
parent d126a4ae
...@@ -4066,6 +4066,17 @@ Type::make_function_type(Typed_identifier* receiver, ...@@ -4066,6 +4066,17 @@ Type::make_function_type(Typed_identifier* receiver,
return new Function_type(receiver, parameters, results, location); 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. // Class Pointer_type.
// Traversal. // Traversal.
......
...@@ -19,6 +19,7 @@ class Float_type; ...@@ -19,6 +19,7 @@ class Float_type;
class Complex_type; class Complex_type;
class String_type; class String_type;
class Function_type; class Function_type;
class Backend_function_type;
class Struct_field; class Struct_field;
class Struct_field_list; class Struct_field_list;
class Struct_type; class Struct_type;
...@@ -484,6 +485,12 @@ class Type ...@@ -484,6 +485,12 @@ class Type
Typed_identifier_list* results, Typed_identifier_list* results,
Location); Location);
static Backend_function_type*
make_backend_function_type(Typed_identifier* receiver,
Typed_identifier_list* parameters,
Typed_identifier_list* results,
Location);
static Pointer_type* static Pointer_type*
make_pointer_type(Type*); make_pointer_type(Type*);
...@@ -1896,6 +1903,23 @@ class Function_type : public Type ...@@ -1896,6 +1903,23 @@ class Function_type : public Type
Btype* fnbtype_; 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. // The type of a pointer.
class Pointer_type : public Type class Pointer_type : public Type
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment