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:
Jakub Jelinek 2013-04-28 23:36:57 +02:00 committed by Jakub Jelinek
parent 5e67a36916
commit 01187df097
8 changed files with 67 additions and 23 deletions

View file

@ -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;