Hi Ian, > Drop the size arguments for the hash/equal functions stored in type > descriptors. Types know what size they are. To make this work, > generate hash/equal functions for types that can use an identity > comparison but are not a standard size and alignment. > > Drop the multiplications by 33 in the generated hash code and the > reflect package hash code. They are not necessary since we started > passing a seed value around, as the seed includes the hash of the > earlier values. > > Copy the algorithms for standard types from the Go 1.7 runtime, > replacing the C functions. > > Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed > to mainline.
this patch broke Solaris/SPARC bootstrap, it seems: building debug/dwarf.lo ICEs like this: go1: internal compiler error: in write_specific_type_functions, at go/gofrontend/types.cc:1993 0x4bc50b Type::write_specific_type_functions(Gogo*, Named_type*, long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Function_type*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Function_type*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:1993 0x4bc8ff Type::specific_type_functions(Gogo*, Named_type*, long long, Function_type*, Function_type*, Named_object**, Named_object**) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:1971 0x4bb2a3 Type::type_functions(Gogo*, Named_type*, Function_type*, Function_type*, Named_object**, Named_object**) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:1753 0x4bf06f Type::type_descriptor_constructor(Gogo*, int, Named_type*, Methods const*, bool) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:2308 0x4c0893 Array_type::array_type_descriptor(Gogo*, Named_type*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:6932 0x4b43c7 Type::make_type_descriptor_var(Gogo*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:1237 0x4b47c3 Type::type_descriptor_pointer(Gogo*, Location) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/types.cc:1172 0x1232d63 Type_descriptor_expression::do_get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:14344 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x43faaf Struct_construction_expression::do_get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:12572 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x4408d3 Array_construction_expression::get_constructor(Translate_context*, Btype*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:12795 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x43cb93 Unary_expression::do_get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:4249 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x4260ef Slice_value_expression::do_get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:14729 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 0x43faaf Struct_construction_expression::do_get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:12572 0x4251df Expression::get_backend(Translate_context*) /vol/gcc/src/hg/trunk/local/gcc/go/gofrontend/expressions.cc:402 Solaris/x86 is fine. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University