From: Ian Lance Taylor Date: Thu, 3 Mar 2011 04:25:47 +0000 (+0000) Subject: Don't crash getting type descriptor of abstract types. X-Git-Tag: upstream/12.2.0~86102 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba6413bd1854385bfc397d59d69eedf419ef2313;p=platform%2Fupstream%2Fgcc.git Don't crash getting type descriptor of abstract types. From-SVN: r170642 --- diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index cebf33a..04b0bec 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -1764,7 +1764,12 @@ Integer_type::do_hash_for_method(Gogo*) const tree 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->bits_ == INT_TYPE_SIZE) @@ -1818,7 +1823,7 @@ Integer_type::do_type_descriptor(Gogo* gogo, Named_type* name) void Integer_type::do_reflection(Gogo*, std::string*) const { - gcc_unreachable(); + gcc_assert(saw_errors()); } // Mangled name. @@ -1974,7 +1979,7 @@ Float_type::do_type_descriptor(Gogo* gogo, Named_type* name) void Float_type::do_reflection(Gogo*, std::string*) const { - gcc_unreachable(); + gcc_assert(saw_errors()); } // Mangled name. @@ -2134,7 +2139,7 @@ Complex_type::do_type_descriptor(Gogo* gogo, Named_type* name) void Complex_type::do_reflection(Gogo*, std::string*) const { - gcc_unreachable(); + gcc_assert(saw_errors()); } // Mangled name.