Because of the patch for PR19238, make_decl_rtl is called before the visibility of variables is determined. You can see this when you compile g++.old-deja/g++.mike/ns12.c with -fpic. default_binds_local_p_1 (decl, 1) does not return true for (anonymous namespace)::i when its decl rtl is created, and hence its symbol_ref flags don't have SYMBOL_FLAG_LOCAL set. Although default_binds_local_p_1 konws how to use the visibility of the decl, it has no way of calling decl_anon_ns_mem_p in the c++ frontend, like decl2.c:determine_visibility does.
That also means that TARGET_IN_SMALL_DATA_P has no usable visibility information that it acn use to guide the decision if something should be put into a small data section. -- Summary: decl rtl generated with incorrect visibility Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32143