This patch to the Go frontend avoids crashing the compiler when an erroneous program causes it to attempt to build a type descriptor for an unnamed integer type, or other types that should never be unnamed. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r 4b6a3ed61b80 go/types.cc --- a/go/types.cc Thu Feb 16 14:08:43 2012 -0800 +++ b/go/types.cc Thu Feb 16 14:17:36 2012 -0800 @@ -2595,7 +2595,7 @@ Expression* Integer_type::do_type_descriptor(Gogo* gogo, Named_type* name) { - go_assert(name != NULL); + go_assert(name != NULL || saw_errors()); return this->plain_type_descriptor(gogo, this->runtime_type_kind_, name); } @@ -2730,7 +2730,7 @@ Expression* Float_type::do_type_descriptor(Gogo* gogo, Named_type* name) { - go_assert(name != NULL); + go_assert(name != NULL || saw_errors()); return this->plain_type_descriptor(gogo, this->runtime_type_kind_, name); } @@ -2857,7 +2857,7 @@ Expression* Complex_type::do_type_descriptor(Gogo* gogo, Named_type* name) { - go_assert(name != NULL); + go_assert(name != NULL || saw_errors()); return this->plain_type_descriptor(gogo, this->runtime_type_kind_, name); }