diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-03-03 04:25:47 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-03-03 04:25:47 +0000 |
commit | ba6413bd1854385bfc397d59d69eedf419ef2313 (patch) | |
tree | 1d12c3d6208e1dab281f7c0f213270e7765673f2 /gcc/go | |
parent | 4d04d67a55d2ca36fd09e04d9ce9ea4c9ed689b8 (diff) | |
download | gcc-ba6413bd1854385bfc397d59d69eedf419ef2313.zip gcc-ba6413bd1854385bfc397d59d69eedf419ef2313.tar.gz gcc-ba6413bd1854385bfc397d59d69eedf419ef2313.tar.bz2 |
Don't crash getting type descriptor of abstract types.
From-SVN: r170642
Diffstat (limited to 'gcc/go')
-rw-r--r-- | gcc/go/gofrontend/types.cc | 13 |
1 files changed, 9 insertions, 4 deletions
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. |