diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-24 00:51:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-24 00:51:10 +0000 |
commit | 3746f0c781beee40cd72fccfe88357bc16ffe1f9 (patch) | |
tree | 2dd35f9ac2a1c245308d9758610de363742ffd6b /gcc | |
parent | 38ac6be772b39c41aa4dee3446ed776084683d62 (diff) | |
download | gcc-3746f0c781beee40cd72fccfe88357bc16ffe1f9.zip gcc-3746f0c781beee40cd72fccfe88357bc16ffe1f9.tar.gz gcc-3746f0c781beee40cd72fccfe88357bc16ffe1f9.tar.bz2 |
Don't crash on invalid use of multiple results.
From-SVN: r168222
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/types.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 6ea5297..0216537 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -3253,26 +3253,35 @@ class Call_multiple_result_type : public Type protected: bool do_has_pointer() const - { gcc_unreachable(); } + { + gcc_assert(saw_errors()); + return false; + } tree do_get_tree(Gogo*); tree do_get_init_tree(Gogo*, tree, bool) - { gcc_unreachable(); } + { + gcc_assert(saw_errors()); + return error_mark_node; + } Expression* do_type_descriptor(Gogo*, Named_type*) - { gcc_unreachable(); } + { + gcc_assert(saw_errors()); + return Expression::make_error(UNKNOWN_LOCATION); + } void do_reflection(Gogo*, std::string*) const - { gcc_unreachable(); } + { gcc_assert(saw_errors()); } void do_mangled_name(Gogo*, std::string*) const - { gcc_unreachable(); } + { gcc_assert(saw_errors()); } private: // The expression being called. |