This patch changes the Go frontend to not make the map zero value constant. The map zero value is a common symbol, and it doesn't really make sense to have a constant common symbol. Current GCC has started to reject this case, probably as part of the fix for PR 83100. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 255090) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -57adb928c3cc61ac8fa47554394670a1c455afc2 +0d6b3abcbfe04949db947081651a503ceb12fe6e The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: gcc/go/gofrontend/types.cc =================================================================== --- gcc/go/gofrontend/types.cc (revision 254748) +++ gcc/go/gofrontend/types.cc (working copy) @@ -7717,10 +7717,10 @@ Map_type::backend_zero_value(Gogo* gogo) std::string asm_name(go_selectively_encode_id(zname)); Bvariable* zvar = gogo->backend()->implicit_variable(zname, asm_name, - barray_type, false, true, true, - Map_type::zero_value_align); + barray_type, false, false, true, + Map_type::zero_value_align); gogo->backend()->implicit_variable_set_init(zvar, zname, barray_type, - false, true, true, NULL); + false, false, true, NULL); return zvar; }