From 8c88f9c957d844c03113bd70100329d2314a9874 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 23 Feb 2011 04:57:01 +0000 Subject: [PATCH] Traverse erroneous function redefinitions. From-SVN: r170428 --- gcc/go/gofrontend/gogo.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 0be8c66a83b..b062c541a69 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -682,10 +682,15 @@ Gogo::start_function(const std::string& name, Function_type* type, else if (!type->is_method()) { ret = this->package_->bindings()->add_function(*pname, NULL, function); - if (!ret->is_function()) + if (!ret->is_function() || ret->func_value() != function) { - // Redefinition error. - ret = Named_object::make_function(name, NULL, function); + // Redefinition error. Invent a name to avoid knockon + // errors. + static int redefinition_count; + char buf[30]; + snprintf(buf, sizeof buf, ".$redefined%d", redefinition_count); + ++redefinition_count; + ret = this->package_->bindings()->add_function(buf, NULL, function); } } else -- 2.30.2