aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-21 23:13:18 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-21 23:13:18 +0000
commit9ff48ac359242322c5dca42ea9d854422360a9ce (patch)
tree56e0e49e2d4fd4165fa69f17a167c0dd5350e64c
parent91ab22083add8122bdc79155ae1de0b5392f88ff (diff)
downloadgcc-9ff48ac359242322c5dca42ea9d854422360a9ce.zip
gcc-9ff48ac359242322c5dca42ea9d854422360a9ce.tar.gz
gcc-9ff48ac359242322c5dca42ea9d854422360a9ce.tar.bz2
Don't crash when returning something from a function named '_'.
From-SVN: r168143
-rw-r--r--gcc/go/gofrontend/gogo.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index 2e45384..bf197e5 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -659,7 +659,13 @@ Gogo::start_function(const std::string& name, Function_type* type,
Named_object* ret;
if (Gogo::is_sink_name(*pname))
- ret = Named_object::make_sink();
+ {
+ static int sink_count;
+ char buf[30];
+ snprintf(buf, sizeof buf, ".$sink%d", sink_count);
+ ++sink_count;
+ ret = Named_object::make_function(buf, NULL, function);
+ }
else if (!type->is_method())
{
ret = this->package_->bindings()->add_function(*pname, NULL, function);