aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-24 00:51:10 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-24 00:51:10 +0000
commit3746f0c781beee40cd72fccfe88357bc16ffe1f9 (patch)
tree2dd35f9ac2a1c245308d9758610de363742ffd6b /gcc
parent38ac6be772b39c41aa4dee3446ed776084683d62 (diff)
downloadgcc-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.cc19
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.