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