diff options
author | Ian Lance Taylor <iant@google.com> | 2012-03-01 05:14:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-03-01 05:14:10 +0000 |
commit | ce842ad6cdd96ec4475cd81b6258ae3c6c46f771 (patch) | |
tree | 58642681b007c2d8a419efeb1a3af019720fea3c /gcc/go/go-gcc.cc | |
parent | fc24bee911ea0d941ffcd8a25db91f417e303168 (diff) | |
download | gcc-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.cc | 6 |
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); |