aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2011-02-24 02:51:00 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2011-02-24 02:51:00 +0000
commit63cc9deb7cad1672212fc84df0ca48900af236e6 (patch)
treed1bae18646ccb3fdc0eae27f3689aa88288ea025 /gcc
parent1b4d46a696a3b95355575127e263b077fd073d37 (diff)
downloadgcc-63cc9deb7cad1672212fc84df0ca48900af236e6.zip
gcc-63cc9deb7cad1672212fc84df0ca48900af236e6.tar.gz
gcc-63cc9deb7cad1672212fc84df0ca48900af236e6.tar.bz2
Don't crash on bad receiver when building recover thunks.
From-SVN: r170452
Diffstat (limited to 'gcc')
-rw-r--r--gcc/go/gofrontend/gogo.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index f1404cc..a63abfe 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -2205,10 +2205,14 @@ Build_recover_thunks::function(Named_object* orig_no)
const std::string& new_receiver_name(orig_fntype->receiver()->name());
Named_object* new_rec_no = new_bindings->lookup_local(new_receiver_name);
- gcc_assert(new_rec_no != NULL
- && new_rec_no->is_variable()
- && new_rec_no->var_value()->is_receiver());
- new_rec_no->var_value()->set_is_not_receiver();
+ if (new_rec_no == NULL)
+ gcc_assert(saw_errors());
+ else
+ {
+ gcc_assert(new_rec_no->is_variable()
+ && new_rec_no->var_value()->is_receiver());
+ new_rec_no->var_value()->set_is_not_receiver();
+ }
}
// Because we flipped blocks but not types, the can_recover