Don't crash on invalid use of multiple results.
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 24 Dec 2010 00:51:10 +0000 (00:51 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 24 Dec 2010 00:51:10 +0000 (00:51 +0000)
From-SVN: r168222

gcc/go/gofrontend/types.cc

index 6ea529717281a8105be9f71911724f63f8bea2d1..02165371503aa33f7ad4c423c5652f1c6e3b8136 100644 (file)
@@ -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.