diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index db9d4443ac9..f0317c4a473 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,8 @@ +2013-08-02 Ian Lance Taylor + + * go-gcc.cc (immutable_struct_set_init): Always call + resolve_unique_section. + 2013-07-24 Ian Lance Taylor * go-gcc.cc (Gcc_backend::non_zero_size_type): If a struct has a diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index 27c756e5496..50dbb3128f1 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -1521,10 +1521,11 @@ Gcc_backend::immutable_struct_set_init(Bvariable* var, const std::string&, TREE_PUBLIC(decl) = 1; } else - { - make_decl_one_only(decl, DECL_ASSEMBLER_NAME(decl)); - resolve_unique_section(decl, 1, 0); - } + make_decl_one_only(decl, DECL_ASSEMBLER_NAME(decl)); + + // These variables are often unneeded in the final program, so put + // them in their own section so that linker GC can discard them. + resolve_unique_section(decl, 1, 1); rest_of_decl_compilation(decl, 1, 0); }