Commit 61ddc5ea by Ian Lance Taylor

compiler: Function_type and Backend_function_type should not be identical

    
    Function_type and Backend_function_type have different backend
    representations, so they should not be identical. Otherwise it
    confuses Type::type_btypes map.
    
    Reviewed-on: https://go-review.googlesource.com/90975

From-SVN: r257216
parent f0ab0c3a
bbce8a9af264b25c5f70bafb2ce95d4fed158d68
a347356d0f432cafb69f0cc5833d27663736a042
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -4442,6 +4442,9 @@ Function_type::is_identical(const Function_type* t, bool ignore_receiver,
Cmp_tags cmp_tags, bool errors_are_identical,
std::string* reason) const
{
if (this->is_backend_function_type() != t->is_backend_function_type())
return false;
if (!ignore_receiver)
{
const Typed_identifier* r1 = this->receiver();
......
......@@ -2074,6 +2074,11 @@ class Function_type : public Type
Btype*
get_backend_fntype(Gogo*);
// Return whether this is a Backend_function_type.
virtual bool
is_backend_function_type() const
{ return false; }
protected:
int
do_traverse(Traverse*);
......@@ -2167,6 +2172,12 @@ class Backend_function_type : public Function_type
: Function_type(receiver, parameters, results, location)
{ }
// Return whether this is a Backend_function_type. This overrides
// Function_type::is_backend_function_type.
bool
is_backend_function_type() const
{ return true; }
protected:
Btype*
do_get_backend(Gogo* gogo)
......
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