From 5e5803060c3d6db3ff73195db798ffd8e5588e78 Mon Sep 17 00:00:00 2001 From: Jozef Lawrynowicz Date: Tue, 25 Jun 2019 09:41:17 +0000 Subject: Implement alternate "__intN__" form of "__intN" type gcc/ChangeLog: * gcc/c-family/c-common.c (c_common_nodes_and_builtins): Define alternate "__intN__" name for "__intN" types. * gcc/c/c-parser.c (c_parse_init): Create keyword for "__intN__" type. * gcc/cp/lex.c (init_reswords): Likewise. * gcc/config/msp430/msp430.h: Use __int20__ for SIZE_TYPE and PTRDIFF_TYPE. * gcc/cp/cp-tree.h (cp_decl_specifier_seq): New bitfield "int_n_alt". * gcc/c/c-decl.c (declspecs_add_type): Don't pedwarn about "__intN" ISO C incompatibility if alternate "__intN__" form is used. * gcc/cp/decl.c (grokdeclarator): Likewise. * gcc/cp/parser.c (cp_parser_simple_type_specifier): Set decl_specs->int_n_alt if "__intN__" form is used. * gcc/gimple-ssa-sprintf.c (build_intmax_type_nodes): Accept "__intN__" format of "__intN" types for UINTMAX_TYPE. * gcc/brig/brig-lang.c (brig_build_c_type_nodes): Accept "__intN__" format of "__intN" types for SIZE_TYPE. * gcc/lto/lto-lang.c (lto_build_c_type_nodes): Likewise. * gcc/stor-layout.c (initialize_sizetypes): Accept "__intN__" format of "__intN" types for SIZETYPE. * gcc/tree.c (build_common_tree_nodes): Accept "__intN__" format of "__intN" types for SIZE_TYPE and PTRDIFF_TYPE. * gcc/doc/invoke.texi: Document that __intN__ disables pedantic warnings. gcc/testsuite/ChangeLog: * gcc.target/msp430/mlarge-pedwarns.c: New test. From-SVN: r272640 --- gcc/c/c-decl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gcc/c/c-decl.c') diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 87ce853..cb2f49f 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -10637,7 +10637,11 @@ declspecs_add_type (location_t loc, struct c_declspecs *specs, case RID_INT_N_2: case RID_INT_N_3: specs->int_n_idx = i - RID_INT_N_0; - if (!in_system_header_at (input_location)) + if (!in_system_header_at (input_location) + /* If the INT_N type ends in "__", and so is of the format + "__intN__", don't pedwarn. */ + && (strncmp (IDENTIFIER_POINTER (type) + + (IDENTIFIER_LENGTH (type) - 2), "__", 2) != 0)) pedwarn (loc, OPT_Wpedantic, "ISO C does not support %<__int%d%> types", int_n_data[specs->int_n_idx].bitsize); -- cgit v1.1