Commit ba6413bd by Ian Lance Taylor

Don't crash getting type descriptor of abstract types.

From-SVN: r170642
parent 4d04d67a
...@@ -1764,7 +1764,12 @@ Integer_type::do_hash_for_method(Gogo*) const ...@@ -1764,7 +1764,12 @@ Integer_type::do_hash_for_method(Gogo*) const
tree tree
Integer_type::do_get_tree(Gogo*) Integer_type::do_get_tree(Gogo*)
{ {
gcc_assert(!this->is_abstract_); if (this->is_abstract_)
{
gcc_assert(saw_errors());
return error_mark_node;
}
if (this->is_unsigned_) if (this->is_unsigned_)
{ {
if (this->bits_ == INT_TYPE_SIZE) if (this->bits_ == INT_TYPE_SIZE)
...@@ -1818,7 +1823,7 @@ Integer_type::do_type_descriptor(Gogo* gogo, Named_type* name) ...@@ -1818,7 +1823,7 @@ Integer_type::do_type_descriptor(Gogo* gogo, Named_type* name)
void void
Integer_type::do_reflection(Gogo*, std::string*) const Integer_type::do_reflection(Gogo*, std::string*) const
{ {
gcc_unreachable(); gcc_assert(saw_errors());
} }
// Mangled name. // Mangled name.
...@@ -1974,7 +1979,7 @@ Float_type::do_type_descriptor(Gogo* gogo, Named_type* name) ...@@ -1974,7 +1979,7 @@ Float_type::do_type_descriptor(Gogo* gogo, Named_type* name)
void void
Float_type::do_reflection(Gogo*, std::string*) const Float_type::do_reflection(Gogo*, std::string*) const
{ {
gcc_unreachable(); gcc_assert(saw_errors());
} }
// Mangled name. // Mangled name.
...@@ -2134,7 +2139,7 @@ Complex_type::do_type_descriptor(Gogo* gogo, Named_type* name) ...@@ -2134,7 +2139,7 @@ Complex_type::do_type_descriptor(Gogo* gogo, Named_type* name)
void void
Complex_type::do_reflection(Gogo*, std::string*) const Complex_type::do_reflection(Gogo*, std::string*) const
{ {
gcc_unreachable(); gcc_assert(saw_errors());
} }
// Mangled name. // Mangled name.
......
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