compiler: don't double count "." in nested_function_num
Nested functions are named "outerfunc.$nestedN", where N is a number. nested_function_num extracts that number. The name is first passed to unpack_hidden_name, which handles the "." and should result "$nestedN". Don't expect the "." again. This fixes assertion failure when escape analysis is enabled and -fgo-debug-escape is on. The failure looks go1: internal compiler error: in nested_function_num, at go/gofrontend/names.cc:241 0x7bd7d3 Gogo::nested_function_num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) Reviewed-on: https://go-review.googlesource.com/76213 From-SVN: r254504
This commit is contained in:
parent
02d7065ff4
commit
8b36a25018
2 changed files with 3 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
1427cedcb0faa627fd89a75e009f7898c25aa86c
|
||||
7fd845bd9414c348bfa30bd24aa0bb8e4eebf83a
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -238,8 +238,8 @@ int
|
|||
Gogo::nested_function_num(const std::string& name)
|
||||
{
|
||||
std::string n(Gogo::unpack_hidden_name(name));
|
||||
go_assert(n.compare(0, 8, ".$nested") == 0);
|
||||
return strtol(n.substr(8).c_str(), NULL, 0);
|
||||
go_assert(n.compare(0, 7, "$nested") == 0);
|
||||
return strtol(n.substr(7).c_str(), NULL, 0);
|
||||
}
|
||||
|
||||
// Return the name to use for a sink function, a function whose name
|
||||
|
|
Loading…
Add table
Reference in a new issue