>> But all of the attributes here have an effect. If you instantiated >> Rafael's template at a type with non-hidden visibility, e.g. int, >> the member's attribute still takes precedence. The attribute is >> only "overridden" in the specific case of instantiating the >> template at a hidden argument. I'm not convinced this is >> actually a problem that bears a warning, vs. something that >> we should defer to some hypothetical "explain everything that's >> happening with this symbol" IDE query. > > > Yea, I was thinking more of the case without the template as deserving a > warning.
Yes, this is hard case for a warning :-( I find the case without a template intuitive, and the template case only surprising with some attributes... I removed the changes that were controversial, split the remaining ones in as many independent changes as possible and committed. With this our behavior is now almost identical to gcc 4.7. In the tests CodeGenCXX/visibility*, the only difference is in the handling of method declarations. GCC produces a default _ZN6Test201BINS_1AILj2EEEE5test5Ev and we produce a hidden one. Cheers, Rafael _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
