N3472 binary constants
N3472 binary constants * include/cpplib.h (struct cpp_options): Fix a typo in user_literals field comment. Add binary_constants field. * init.c (struct lang_flags): Add binary_constants field. (lang_defaults): Add bin_cst column to the table. (cpp_set_lang): Initialize CPP_OPTION (pfile, binary_constants). * expr.c (cpp_classify_number): Talk about C++11 instead of C++0x in diagnostics. Accept binary constants if CPP_OPTION (pfile, binary_constants) even when pedantic. Adjust pedwarn message. * g++.dg/cpp/limits.C: Adjust warning wording. * g++.dg/system-binary-constants-1.C: Likewise. * g++.dg/cpp1y/system-binary-constants-1.C: New test. From-SVN: r198380
This commit is contained in:
parent
5e67a36916
commit
01187df097
8 changed files with 67 additions and 23 deletions
|
@ -621,7 +621,7 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token,
|
|||
&& CPP_OPTION (pfile, cpp_warn_long_long))
|
||||
{
|
||||
const char *message = CPP_OPTION (pfile, cplusplus)
|
||||
? N_("use of C++0x long long integer constant")
|
||||
? N_("use of C++11 long long integer constant")
|
||||
: N_("use of C99 long long integer constant");
|
||||
|
||||
if (CPP_OPTION (pfile, c99))
|
||||
|
@ -639,9 +639,14 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token,
|
|||
if ((result & CPP_N_IMAGINARY) && CPP_PEDANTIC (pfile))
|
||||
cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
|
||||
"imaginary constants are a GCC extension");
|
||||
if (radix == 2 && CPP_PEDANTIC (pfile))
|
||||
if (radix == 2
|
||||
&& !CPP_OPTION (pfile, binary_constants)
|
||||
&& CPP_PEDANTIC (pfile))
|
||||
cpp_error_with_line (pfile, CPP_DL_PEDWARN, virtual_location, 0,
|
||||
"binary constants are a GCC extension");
|
||||
CPP_OPTION (pfile, cplusplus)
|
||||
? "binary constants are a C++1y feature "
|
||||
"or GCC extension"
|
||||
: "binary constants are a GCC extension");
|
||||
|
||||
if (radix == 10)
|
||||
result |= CPP_N_DECIMAL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue