compiler: Add Backend Function type.

From-SVN: r206611
This commit is contained in:
Ian Lance Taylor 2014-01-14 23:21:16 +00:00
parent d126a4aed0
commit 967d49d172
2 changed files with 35 additions and 0 deletions

View File

@ -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.

View File

@ -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