aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/go-gcc.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2012-03-01 05:14:10 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2012-03-01 05:14:10 +0000
commitce842ad6cdd96ec4475cd81b6258ae3c6c46f771 (patch)
tree58642681b007c2d8a419efeb1a3af019720fea3c /gcc/go/go-gcc.cc
parentfc24bee911ea0d941ffcd8a25db91f417e303168 (diff)
downloadgcc-ce842ad6cdd96ec4475cd81b6258ae3c6c46f771.zip
gcc-ce842ad6cdd96ec4475cd81b6258ae3c6c46f771.tar.gz
gcc-ce842ad6cdd96ec4475cd81b6258ae3c6c46f771.tar.bz2
compiler: Avoid some compiler crashes on invalid code.
* go-gcc.cc (class Gcc_tree): Add set_tree method. (set_placeholder_pointer_type): When setting to a pointer to error, set to error_mark_node. From-SVN: r184684
Diffstat (limited to 'gcc/go/go-gcc.cc')
-rw-r--r--gcc/go/go-gcc.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index b2b61eb..a19bb89 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -56,6 +56,10 @@ class Gcc_tree
get_tree() const
{ return this->t_; }
+ void
+ set_tree(tree t)
+ { this->t_ = t; }
+
private:
tree t_;
};
@@ -626,7 +630,7 @@ Gcc_backend::set_placeholder_pointer_type(Btype* placeholder,
tree tt = to_type->get_tree();
if (tt == error_mark_node)
{
- TREE_TYPE(pt) = tt;
+ placeholder->set_tree(error_mark_node);
return false;
}
gcc_assert(TREE_CODE(tt) == POINTER_TYPE);