On Sat, Sep 6, 2014 at 5:31 PM, Nico Weber <[email protected]> wrote:
> On Sat, Sep 6, 2014 at 5:02 PM, Nico Weber <[email protected]> wrote: > >> On Sat, Sep 6, 2014 at 4:38 PM, Richard Smith <[email protected]> >> wrote: >> >>> -Wc++98-compat doesn't make sense here: that warning group is for >>> warning on code that is valid in the current language but not in C++98. >>> >> >> The same is true for warn_cxx98_compat_enumerator_list_comma (which is >> in CXX98CompatPedantic) too though, right? >> > That's not how the cxx98_compat warnings work. This is what we do there: if (!getLangOpts().C99 && !getLangOpts().CPlusPlus11) Diag(CommaLoc, getLangOpts().CPlusPlus ? diag::ext_enumerator_list_comma_cxx : diag::ext_enumerator_list_comma_c) << FixItHint::CreateRemoval(CommaLoc); else if (getLangOpts().CPlusPlus11) Diag(CommaLoc, diag::warn_cxx98_compat_enumerator_list_comma) << FixItHint::CreateRemoval(CommaLoc); Note that we never produce a -Wc++98-compat warning in C++98 mode. And we do a similar thing for this warning, but it's a little more complex because we can't go through the motions of creating the temporary in C++11 mode, since that might trigger template instantiations we're not allowed to perform etc. …anyhoo, here's a version that just makes this warning an Extension. > You should move over ext_rvalue_to_reference_temp_copy_no_viable too. It doesn't make sense to downgrade only one of these two to an extension (either we ignore the temporary copy as an extension or we don't; we shouldn't be halfway between). > I didn't move CXX98CompatBindToTemporaryCopy to CXX98CompatPedanticbecause > that seems like an unrelated change, > It isn't: -Wc++98-compat-pedantic is supposed to warn on things that would warned about in -pedantic C++98 mode. Since you're moving this warning from ExtWarn to Extension, that means the corresponding -Wc++98-compat warning should move to -Wc++98-compat-pedantic. and because it contradicts the comment above CXX98CompatPedantic: > > // Warnings for C++11 features which are Extensions in C++98 mode. > You're making the C++11 "ignore the temporary copy when binding a reference to a temporary of the same type" feature an Extension in C++98 mode, so -Wc++98-compat-bind-to-temporary-copy belongs in the -Wc++98-compat-pedantic group in C++11 mode. I don't see a contradiction with the comment, but maybe we could clarify it somehow?
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
