Skip to content
Snippets Groups Projects
  1. Nov 16, 2013
    • Joseph Myers's avatar
      ucnid-2011-1.c: New test. · d3f4ff8b
      Joseph Myers authored
      gcc/testsuite:
      	* c-c++-common/cpp/ucnid-2011-1.c: New test.
      
      libcpp:
      	* ucnid.tab: Add C11 and C11NOSTART data.
      	* makeucnid.c (digit): Rename enum value to N99.
      	(C11, N11, all_languages): New enum values.
      	(NUM_CODE_POINTS, MAX_CODE_POINT): New macros.
      	(flags, decomp, combining_value): Use NUM_CODE_POINTS as array
      	size.
      	(decomp): Use unsigned int as element type.
      	(all_decomp): New array.
      	(read_ucnid): Handle C11 and C11NOSTART.  Use MAX_CODE_POINT.
      	(read_table): Use MAX_CODE_POINT.  Store all decompositions in
      	all_decomp.
      	(read_derived): Use MAX_CODE_POINT.
      	(write_table): Use NUM_CODE_POINTS.  Print N99, C11 and N11
      	flags.  Print whole array variable declaration rather than just
      	array contents.
      	(char_id_valid, write_context_switch): New functions.
      	(main): Call write_context_switch.
      	* ucnid.h: Regenerate.
      	* include/cpplib.h (struct cpp_options): Add c11_identifiers.
      	* init.c (struct lang_flags): Add c11_identifiers.
      	(cpp_set_lang): Set c11_identifiers option from selected language.
      	* internal.h (struct normalize_state): Document "previous" as
      	previous starter character.
      	(NORMALIZE_STATE_UPDATE_IDNUM): Take character as argument.
      	* charset.c (DIG): Rename enum value to N99.
      	(C11, N11): New enum values.
      	(struct ucnrange): Give name to struct.  Use short for flags and
      	unsigned int for end of range.  Include ucnid.h for whole variable
      	declaration.
      	(ucn_valid_in_identifier): Allow for characters up to 0x10FFFF.
      	Allow for C11 in determining valid characters and valid start
      	characters.  Use check_nfc for non-Hangul context-dependent
      	checks.  Only store starter characters in nst->previous.
      	(_cpp_valid_ucn): Pass new argument to
      	NORMALIZE_STATE_UPDATE_IDNUM.
      	* lex.c (lex_identifier): Pass new argument to
      	NORMALIZE_STATE_UPDATE_IDNUM.  Call NORMALIZE_STATE_UPDATE_IDNUM
      	after initial non-UCN part of identifier.
      	(lex_number): Pass new argument to NORMALIZE_STATE_UPDATE_IDNUM.
      
      From-SVN: r204886
      d3f4ff8b
  2. Nov 05, 2013
    • Tobias Burnus's avatar
      c.opt (-Wdate-time): New option · e8ff5196
      Tobias Burnus authored
      2013-11-05  Tobias Burnus  <burnus@net-b.de>
      
      gcc/c-family/
              * c.opt (-Wdate-time): New option
              * c-opts.c (sanitize_cpp_opts): Pass on to libcpp.
      
      gcc/
              * doc/invoke.texi (-Wdate-time): Document.
      
      gcc/fortran
              * lang.opt (-Wdate-time): New option
              * cpp.c (gfc_cpp_option_data): Add warn_date_time.
              (gfc_cpp_init_options, gfc_cpp_handle_option,
              gfc_cpp_post_options): Handle it and pass on to libcpp.
      
      gcc/testsuite/
              * g++.dg/warn/wdate-time.C: New.
              * gcc.dg/wdate-time.c: New.
              * gfortran.dg/wdate-time.F90: New.
      
      libcpp/
              * include/cpplib.h (CPP_W_DATE_TIME): Added.
              (cpp_options): Add warn_date_time.
              * init.c (cpp_create_reader): Init it.
              * macro.c (_cpp_builtin_macro_text): Warn when
              __DATE__/__TIME__/__TIMESTAMP__ is used.
      
      From-SVN: r204420
      e8ff5196
  3. Oct 31, 2013
    • Edward Smith-Rowland's avatar
      Implement C++14 digit separators. · 7057e645
      Edward Smith-Rowland authored
      libcpp:
      
      2013-10-31  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
              Implement C++14 digit separators.
      	* include/cpplib.h (cpp_options): Add digit_separators flag.
      	* internal.h (DIGIT_SEP(c)): New macro.
      	* expr.c (cpp_classify_number): Check improper placement of digit sep;
      	(cpp_interpret_integer): Skip over digit separators.
      	* init.c (lang_flags): Add digit_separators flag; (lang_defaults): Add
      	digit separator flags per language; (cpp_set_lang): Set
      	digit_separators
      	* lex.c (lex_number): Add digits separator to allowable characters for
      	C++14.
      
      
      gcc/c-family:
      
      2013-10-31  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
              Implement C++14 digit separators.
      	* c-lex.c (interpret_float): Remove digit separators from scratch string
      	before building real literal.
      
      
      gcc/testsuite:
      
      2013-10-31  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
              Implement C++14 digit separators.
      	* g++.dg/cpp1y/digit-sep.C: New.
      	* g++.dg/cpp1y/digit-sep-neg.C: New.
      	* g++.dg/cpp1y/digit-sep-cxx11-neg.C: New.
      
      
      libstdc++-v3:
      
      2013-10-31  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
              Implement C++14 digit separators.
      	* include/include/bits/parse_numbers.h: Change struct _Digit<_Base, '`'>
      	to struct _Digit<_Base, '\''>.
      
      From-SVN: r204260
      7057e645
  4. Apr 28, 2013
    • Jakub Jelinek's avatar
      N3472 binary constants · 01187df0
      Jakub Jelinek authored
      	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
      01187df0
  5. Apr 24, 2013
    • Paolo Carlini's avatar
      cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y. · 61949153
      Paolo Carlini authored
      /libcpp
      2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* include/cpplib.h (enum c_lang): Add CLK_GNUCXX1Y and CLK_CXX1Y.
      	* init.c (lang_defaults): Add defaults for the latter.
      	(cpp_init_builtins): Define __cplusplus as 201300L for the latter.
      	* lex.c (_cpp_lex_direct): Update.
      
      /gcc/c-family
      2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* c-opts.c (set_std_cxx11): Use CLK_CXX1Y and CLK_GNUCXX1Y.
      
      /gcc/testsuite
      2013-04-24  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp1y/cplusplus.C: New.
      
      From-SVN: r198261
      61949153
  6. Jan 14, 2013
  7. Nov 16, 2012
    • Simon Baldwin's avatar
      cpplib.h (struct cpp_options): Add canonical_system_headers. · 5dc99c46
      Simon Baldwin authored
          * include/cpplib.h (struct cpp_options): Add canonical_system_headers.
          * files.c (find_file_in_dir): Call maybe_shorter_path() only if
          canonical_system_headers is set.
          * init.c (cpp_create_reader): Initialize canonical_system_headers.
          * configure.ac: Add new --enable-canonical-system-headers.
          * configure: Regenerate.
          * config.in: Regenerate.
      
          * doc/cppopts.texi: Document -f[no-]canonical-system-headers.
          * doc/install.texi: Document --enable-canonical-system-headers.
      
          * c.opt: Add f[no-]canonical-system-headers.
          * c-opts.c (c_common_handle_option): Handle
          OPT_fcanonical_system_headers.
      
      From-SVN: r193569
      5dc99c46
  8. Nov 10, 2012
  9. Oct 23, 2012
    • Joseph Myers's avatar
      gcc: · 1efcb8c6
      Joseph Myers authored
      	* config.gcc (*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu |
      	*-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu): Use
      	glibc-c.o in c_target_objs and cxx_target_objs.  Use t-glibc in
      	tmake_file.  Set target_has_targetcm.
      	(tilegx-*-linux*, tilepro-*-linux*): Append to c_target_objs and
      	cxx_target_objs rather than overriding previous value.
      	* config/glibc-c.c, config/t-glibc: New.
      	* doc/tm.texi.in (TARGET_C_PREINCLUDE): New @hook.
      	* doc/tm.texi: Regenerate.
      	* hooks.c (hook_constcharptr_void_null): New.
      	* hooks.h (hook_constcharptr_void_null): Declare.
      
      gcc/c-family:
      	* c-common.h (pch_cpp_save_state): Declare.
      	* c-target.def (c_preinclude): New hook.
      	* c-opts.c (done_preinclude): New.
      	(push_command_line_include): Handle default preincluded header.
      	(cb_file_change): Call pch_cpp_save_state when calling
      	push_command_line_include.
      	* c-pch.c (pch_ready_to_save_cpp_state, pch_cpp_state_saved)
      	(pch_cpp_save_state): New.
      	(pch_init): Call pch_cpp_save_state conditionally, instead of
      	calling cpp_save_state.
      
      gcc/testsuite:
      	* gcc.dg/c99-predef-1.c: New test.
      	* gcc.dg/cpp/cmdlne-dU-1.c, gcc.dg/cpp/cmdlne-dU-2.c,
      	gcc.dg/cpp/cmdlne-dU-3.c, gcc.dg/cpp/cmdlne-dU-4.c,
      	gcc.dg/cpp/cmdlne-dU-5.c, gcc.dg/cpp/cmdlne-dU-6.c,
      	gcc.dg/cpp/cmdlne-dU-7.c, gcc.dg/cpp/cmdlne-dU-8.c,
      	gcc.dg/cpp/cmdlne-dU-9.c, gcc.dg/cpp/cmdlne-dU-10.c,
      	gcc.dg/cpp/cmdlne-dU-11.c, gcc.dg/cpp/cmdlne-dU-12.c,
      	gcc.dg/cpp/cmdlne-dU-13.c, gcc.dg/cpp/cmdlne-dU-14.c,
      	gcc.dg/cpp/cmdlne-dU-15.c, gcc.dg/cpp/cmdlne-dU-16.c,
      	gcc.dg/cpp/cmdlne-dU-17.c, gcc.dg/cpp/cmdlne-dU-18.c,
      	gcc.dg/cpp/cmdlne-dU-19.c, gcc.dg/cpp/cmdlne-dU-20.c,
      	gcc.dg/cpp/cmdlne-dU-21.c, gcc.dg/cpp/cmdlne-dU-22.c,
      	gcc.dg/cpp/mi5.c, gcc.dg/cpp/multiline.c: Add -nostdinc to
      	dg-options.
      
      libcpp:
      	* files.c (struct _cpp_file): Add implicit_preinclude.
      	(pch_open_file): Allow a previously opened implicitly included
      	file.
      	(_cpp_find_file): Add implicit_preinclude argument.  Free file and
      	do not call open_file_failed if implicit_preinclude.  Store
      	implicit_preinclude value.
      	(_cpp_stack_include, _cpp_fake_include, _cpp_compare_file_date):
      	Update calls to _cpp_find_file.
      	(_cpp_stack_include): Handle IT_DEFAULT.
      	(cpp_push_default_include): New.
      	* include/cpplib.h (cpp_push_default_include): Declare.
      	* init.c (cpp_read_main_file): Update call to _cpp_find_file.
      	* internal.h (enum include_type): Add IT_DEFAULT.
      	(_cpp_find_file): Update prototype.
      
      From-SVN: r192715
      1efcb8c6
  10. Aug 15, 2012
    • Diego Novillo's avatar
      backport: As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html... · 0823efed
      Diego Novillo authored
      Merge from cxx-conversion branch (http://gcc.gnu.org/wiki/cxx-conversion).
      
      As described in http://gcc.gnu.org/ml/gcc/2012-08/msg00015.html, this patch
      changes the default bootstrap process so that stage 1 always builds with a C++
      compiler.
      
      Other than the bootstrap change, the patch makes no functional changes to the
      compiler.  Everything should build as it does now in trunk.  The main
      changes in this patch are:
      
      1- Configuration changes.
      2- Re-write of VEC.
      3- Re-write of gengtype to support C++ templates and
         user-provided marking functions.
      4- New hash table class.
      5- Re-write double_int.
      6- Implement tree macros as inline functions so they can be
         called from gdb.
      
      As discussed before, several of these changes do not fully change
      the call sites to use the new APIs.
      
      The bootstrap changes have already been tested on a wide range of
      targets (http://gcc.gnu.org/wiki/CppBuildStatus).  Additionally,
      I have tested the merged trunk on: x86_64-unknown-linux-gnu,
      mips64el-unknown-linux-gnu, powerpc64-unknown-linux-gnu,
      i686-pc-linux-gnu, and ia64-unknown-linux-gnu.
      
      ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.
      
      	* Makefile.tpl (STAGE[+id+]_CXXFLAGS): Remove
      	POSTSTAGE1_CONFIGURE_FLAGS.
      	* Makefile.in: Regenerate.
      	* configure.ac (ENABLE_BUILD_WITH_CXX): Remove.  Update all users.
      	Force C++ when bootstrapping.
      	* configure: Regenerate.
      
      
      libcpp/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* Makefile.in: Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge from cxx-conversion branch.  New C++ hash table.
      
      	* include/symtab.h (typedef struct ht hash_table): Change the typedef
      	name to cpp_hash_table.  Update all users of the typedef.
      
      gcc/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* configure.ac (CXX_FOR_BUILD): Define and substitute.
      	(BUILD_CXXFLAGS): Define.
      	Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	Force all build to be with C++.
      	* Makefile.in (BUILD_CXXFLAGS): Use it.
      	Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* doc/install.texi: Remove documentation for --enable-build-with-cxx
      	and --enable-build-poststage1-with-cxx.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Re-implement VEC in C++.
      
      	* vec.c (vec_heap_free): Convert into a template function.
      	(vec_gc_o_reserve_1): Make extern.
      	(vec_gc_p_reserve): Remove.
      	(vec_gc_p_reserve_exact): Remove.
      	(vec_gc_o_reserve): Remove.
      	(vec_gc_o_reserve_exact): Remove.
      	(vec_heap_o_reserve_1): Make extern.
      	(vec_heap_p_reserve): Remove.
      	(vec_heap_p_reserve_exact): Remove.
      	(vec_heap_o_reserve): Remove.
      	(vec_heap_o_reserve_exact): Remove.
      	(vec_stack_p_reserve): Remove.
      	(vec_stack_p_reserve_exact): Remove.
      	* vec.h (VEC_CHECK_INFO, VEC_CHECK_DECL, VEC_CHECK_PASS,
      	VEC_ASSERT, VEC_ASSERT_FAIL, vec_assert_fail): Move earlier
      	in the file.
      	(VEC): Define to vec_t<T>.
      	(vec_allocation_t): Define.
      	(struct vec_prefix): Move earlier in the file.
      	(vec_t<T>): New template.
      	(DEF_VEC_I, DEF_VECL_ALLOC_I, DEF_VEC_P, DEF_VEC_ALLOC_P,
      	DEF_VEC_O, DEF_VEC_ALLOC_P, DEF_VEC_O, DEF_VEC_ALLOC_O,
      	DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_O_STACK,
      	DEF_VEC_ALLOC_I_STACK): Expand to 'struct vec_swallow_trailing_semi'.
      	(DEF_VEC_A): Provide template instantiations for
      	GC/PCH markers that do not traverse the vector.
      	(vec_stack_p_reserve): Remove.
      	(vec_stack_p_reserve_exact): Remove.
      	(vec_stack_p_reserve_exact_1): Remove.
      	(vec_stack_o_reserve): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(vec_stack_free): Re-write as a template function.
      	(vec_reserve): New template function.
      	(vec_reserve_exact): New template function.
      	(vec_heap_free): New template function if GATHER_STATISTICS is
      	defined.  Otherwise, macro that expands to free().
      	(VEC_length_1): New template function.
      	(VEC_length): Call it.
      	(VEC_empty_1): New template function.
      	(VEC_empty): Call it.
      	(VEC_address_1): New template function.
      	(VEC_address): Call it.
      	(VEC_last_1): New template function.
      	(VEC_last): Call it.  Change return type to T&.
      	Change all users that used VEC_Os.
      	(VEC_index_1): New template function.
      	(VEC_index): Call it.  Return a T& instead of a T*.
      	Update all callers that were using VEC_O before.
      	(VEC_iterate_1): New template function.
      	(VEC_iterate): Call it.
      	(VEC_embedded_size_1): New template function.
      	(VEC_embedded_size): Call it.
      	(VEC_embedded_init_1): New template function.
      	(VEC_embedded_init): Call it.
      	(VEC_alloc_1): New template function.
      	(VEC_alloc): Call it.  If A is 'stack', call XALLOCAVAR to
      	do the allocation.
      	(VEC_free_1): New template function.
      	(VEC_free): Call it.
      	(VEC_copy_1): New template function.
      	(VEC_copy): Call it.
      	(VEC_space_1): New template function
      	(VEC_space): Call it.
      	(VEC_reserve_1): New template function.
      	(VEC_reserve): Call it.
      	(VEC_reserve_exact_1): New template function.
      	(VEC_reserve_exact): Call it.
      	(VEC_splice_1): New template function.
      	(VEC_splice): Call it.
      	(VEC_safe_splice_1): New template function.
      	(VEC_safe_splice): Call it.
      	(VEC_quick_push_1): New template function.  Create two overloads, one
      	accepting T, the other accepting T *.  Update all callers
      	where T and T * are ambiguous.
      	(VEC_quick_push): Call it.
      	(VEC_safe_push_1): New template function. Create two overloads, one
      	accepting T, the other accepting T *.  Update all callers
      	where T and T * are ambiguous.
      	(VEC_safe_push): Call it.
      	(VEC_pop_1): New template function.
      	(VEC_pop): Call it.
      	(VEC_truncate_1): New template function.
      	(VEC_truncate): Call it.
      	(VEC_safe_grow_1): New template function.
      	(VEC_safe_grow): Call it.
      	(VEC_safe_grow_cleared_1): New template function.
      	(VEC_safe_grow_cleared): Call it.
      	(VEC_replace_1): New template function.
      	(VEC_replace): Call it.  Always accept T instead of T*.
      	Update all callers that used VEC_Os.
      	(VEC_quick_insert_1): New template function.
      	(VEC_quick_insert): Call it.
      	(VEC_safe_insert_1): New template function.
      	(VEC_safe_insert): Call it.
      	(VEC_ordered_remove_1): New template function.
      	(VEC_ordered_remove): Call it.
      	(VEC_unordered_remove_1): New template function.
      	(VEC_unordered_remove): Call it.
      	(VEC_block_remove_1): New template function.
      	(VEC_block_remove): Call it.
      	(VEC_lower_bound_1): New template function.
      	(VEC_lower_bound): Call it.
      	(VEC_OP): Remove.
      	(DEF_VEC_FUNC_P): Remove.
      	(DEF_VEC_ALLOC_FUNC_P): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_P): Remove.
      	(DEF_VEC_FUNC_O): Remove.
      	(DEF_VEC_ALLOC_FUNC_O): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_O): Remove.
      	(DEF_VEC_ALLOC_FUNC_I): Remove.
      	(DEF_VEC_NONALLOC_FUNCS_I): Remove.
      	(DEF_VEC_ALLOC_FUNC_P_STACK): Remove.
      	(DEF_VEC_ALLOC_FUNC_O_STACK): Remove.
      	(DEF_VEC_ALLOC_FUNC_I_STACK): Remove.
      	(vec_reserve_exact): New template function.
      
      	* gengtype-lex.l (DEF_VEC_ALLOC_[IOP]/{EOID}): Remove.
      	* gengtype-parse.c (token_names): Remove DEF_VEC_ALLOC_[IOP].
      	(typedef_name): Emit vec_t<C1> instead of VEC_C1_C2.
      	(def_vec_alloc): Remove.  Update all callers.
      	* gengtype.c (filter_type_name): New.
      	(output_mangled_typename): Call it.
      	(write_func_for_structure): Likewise.
      	(write_types): Likewise.
      	(write_root): Likewise.
      	(write_typed_alloc_def): Likewise.
      	(note_def_vec): Emit vec_t<TYPE_NAME> instead of VEC_TYPE_NAME_base.
      	(note_def_vec_alloc): Remove.
      	* gengtype.h (note_def_vec_alloc): Remove.
      	(DEFVEC_ALLOC): Remove token code.
      
      	* df-scan.c (df_bb_verify): Remove call to df_free_collection_rec
      	inside the insn traversal loop.
      	* gimplify.c (gimplify_compound_lval): Rename STACK to EXPR_STACK.
      	* ipa-inline.c (inline_small_functions): Rename HEAP to EDGE_HEAP.
      	* reg-stack.c (stack): Rename to STACK_PTR.  Update all users.
      	* tree-vrp.c (stack): Rename to EQUIV_STACK.  Update all users.
      
      	* config/bfin/bfin.c (hwloop_optimize): Update some calls to
      	VEC_* for vectors of non-pointers.
      	* config/c6x/c6x.c (try_rename_operands): Likewise.
      	(reshuffle_units): Likewise.
      	* config/mips/mips.c (mips_multi_start): Likewise.
      	(mips_multi_add): Likewise.
      	(mips_multi_copy_insn): Likewise.
      	(mips_multi_set_operand): Likewise.
      	* hw-doloop.c (discover_loop): Likewise.
      	(discover_loops): Likewise.
      	(reorg_loops): Likewise.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  C++ support in gengtype.
      
      	* coretypes.h (gt_pointer_operator): Move from ...
      	* ggc.h: ... here.
      	* doc/gty.texi: Document support for C++ templates and
      	user-provided markers.
      	* gcc/gengtype-lex.l: Update copyright year.
      	Remove support for recognizing DEF_VEC_O, DEF_VEC_P and
      	DEFVEC_I.
      	* gengtype-parse.c: Update copyright year.
      	(token_names): Remove DEF_VEC_O, DEF_VEC_P and DEF_VEC_I.
      	(require_template_declaration): New.
      	(typedef_name): Call it.
      	(type): Replace IS_UNION with KIND. Replace all users.
      	(def_vec): Remove.  Update all users.
      	* gengtype-state.c (type_lineloc): Handle TYPE_USER_STRUCT.
      	(write_state_user_struct_type): New.
      	(write_state_type): Call it.
      	(read_state_user_struct_type): New.
      	(read_state_type): Call it.
      	* gengtype.c: Update copyright year.
      	(dump_pair): Move declaration to the top.
      	(dump_type): Likewise.
      	(dump_type_list): Likewise.
      	(dbgprint_count_type_at): Handle TYPE_USER_STRUCT.
      	(create_user_defined_type): New.
      	(resolve_typedef): Call it.
      	(new_structure): Replace argument ISUNION with KIND.
      	Change users to refer to KIND directly.
      	Update all callers.
      	(find_structure): Likewise.
      	(set_gc_used_type): Handle TYPE_USER_STRUCT.
      	(create_file): Update HDR to include new copyright year.
      	(struct walk_type_data): Add field IN_PTR_FIELD.
      	(output_mangled_typename): Handle TYPE_USER_STRUCT.
      	(walk_type): Set D->IN_PTR_FIELD when walking a TYPE_POINTER.
      	Clear it afterwards.
      	Handle TYPE_USER_STRUCT.
      	(write_types_process_field): Handle TYPE_USER_STRUCT.
      	(get_type_specifier): Move earlier in the file.
      	(write_type_decl): New.
      	(write_marker_function_name): New.
      	(write_user_func_for_structure_ptr): New.
      	(write_user_func_for_structure_body): New.
      	(write_user_marking_functions): New.
      	(write_func_for_structure): Call write_marker_function_name
      	and write_type_decl.
      	Do not call walk_type for TYPE_USER_STRUCT. Emit a call to the user
      	function directly.
      	Call write_user_marking_functions on TYPE_USER_STRUCTs.
      	(write_types_local_user_process_field): New.
      	(write_pch_user_walking_for_structure_body): New.
      	(write_pch_user_walking_functions): New.
      	(write_types_local_process_field): Handle TYPE_USER_STRUCT.
      	(write_local_func_for_structure): Do not call walk_type for
      	TYPE_USER_STRUCT. Instead, emit the call to gt_pch_nx directly.
      	Call write_pch_user_walking_functions for TYPE_USER_STRUCTs.
      	(write_root): Handle TYPE_USER_STRUCT.
      	(vec_prefix_type): Remove.  Update all users.
      	(note_def_vec): Remove.  Update all users.
      	(dump_typekind): Handle TYPE_USER_STRUCT.
      	(dump_type): Initialize SEEN_TYPES, if needed.
      	Handle TYPE_USER_STRUCT.
      	(dump_everything): Do not initialize SEEN_TYPES.
      	* gengtype.h: Update copyright year.
      	(enum typekind): Add TYPE_USER_STRUCT.
      	(union_or_struct_p): Rename from UNION_OR_STRUCT_P.
      	Convert into function.
      	Add an overload taking const_type_p.
      	Update all callers.
      	(new_structure): Change second field to type enum typekind.
      	Update all users.
      	(find_structure): Likewise.
      	(note_def_vec): Remove.
      	(DEFVEC_OP): Remove.
      	(DEFVEC_I): Remove.
      	* ggc-page.c (gt_ggc_mx): Add entry points for marking
      	'const char *&', 'unsigned char *&' and 'unsigned char&'.
      	* ggc-zone.c (gt_ggc_mx): Add entry points for marking
      	'const char *&' and 'unsigned char *&'.
      	* stringpool.c (gt_pch_nx): Add entry points for marking
      	'const char *&', 'unsigned char *&' and 'unsigned char&'.
      	Add an entry point for the overload taking arguments 'unsigned char
      	*', 'gt_pointer_operator' and 'void *'.
      	* vec.h (struct vec_prefix): Remove GTY marker.
      	(struct vec_t): Remove GTY((length)) attribute from field 'vec'.
      	(gt_ggc_mx (vec_t<T> *)): New template function.
      	(gt_pch_nx (vec_t<T> *)): New template function.
      	(gt_pch_nx (vec_t<T *> *, gt_pointer_operator, void *)): New template
      	function.
      	(gt_pch_nx (vec_t<T> *, gt_pointer_operator, void *)): New template
      	function.
      
      	* basic-block.h (struct edge_def): Mark GTY((user)).
      	Remove all GTY markers from fields.
      	(gt_ggc_mx): Declare.
      	(gt_pch_nx): Declare.
      	* tree-cfg.c (gt_ggc_mx): New.
      	(gt_pch_nx): New.
      
      	* gengtype-lex.l (USER_GTY): Add pattern for "user".
      	* gengtype-parse.c (option): Handle USER_GTY.
      	(opts_have): New.
      	(type): Call it.
      	If the keyword 'user' is used, do not walk the fields
      	of the structure.
      	* gengtype.h (USER_GTY): Add.
      	* doc/gty.texi: Update.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge cxx-conversion branch.  Implement C++ hash table.
      
      	* hash-table.h: New. Implementation borrowed from libiberty/hashtab.c.
      	* hash-table.c: Likewise.
      	* tree-ssa-tail-merge.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t same_succ_htab): Change type to hash_table;
      	move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(same_succ_print_traverse): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(same_succ_hash): Likewise.
      	(same_succ_equal): Likewise.
      	(same_succ_delete): Likewise.
      	* tree-ssa-threadupdate.c: Include hash-table.h.
      	(struct local_info): Rename to ssa_local_info_t to avoid overloading
      	the type name local_info with the variable name local_info.
      	(static htab_t redirection_data): Change type to hash_table.
      	Move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(redirection_data_hash): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(redirection_data_eq): Likewise.
      	(fix_duplicate_block_edges): Likewise.
      	(create_duplicates): Likewise.
      	(fixup_template_block): Likewise.
      	(redirect_edges): Likewise.
      	(lookup_redirection_data): Change types associated with the hash table
      	from void* to their actual type. Remove unnecessary casts.
      	* tree-ssa-ccp.c: Include hash-table.h.
      	(typedef gimple_htab): New.  Uses hash_table.  Replace specific uses
      	of htab_t with gimple_htab.  Change users to invoke member functions.
      	Move specification of helper functions from create call to declaration.
      	* tree-ssa-coalesce.c: Include hash-table.h instead of hashtab.h.
      	(hash_ssa_name_by_var): Make extern. Remove void* casting.
      	(eq_ssa_name_by_var): Likewise.
      	(coalesce_ssa_name): Change type of local static htab_t ssa_name_hash
      	to hash_table. Change users to invoke member functions.
      	Move specification of helper functions from create call to declaration.
      	* coverage.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t counts_hash): Change type to hash_table;
      	move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(htab_counts_entry_hash): Make extern. Rename with coverage_... instead
      	of htab_... Remove void* casting.
      	(htab_counts_entry_eq): Likewise.
      	(htab_counts_entry_del): Likewise.
      	* tree-ssa-pre.c: Include hash-table.h instead of hashtab.h.
      	(static htab_t expression_to_id): Change type to hash_table.
      	Move specification of helper functions from create call to declaration.
      	Change users to invoke member functions.
      	(static htab_t phi_translate_table): Likewise.
      	(pre_expr_eq): Make extern ssa_.... Change callers.
      	Remove void* casting.
      	(pre_expr_hash): Likewise.
      	(expr_pred_trans_hash): Likewise.
      	(expr_pred_trans_eq): Likewise.
      	(alloc_expression_id): Change types associated with the hash table
      	from void* to their actual type. Remove unnecessary casts.
      	(lookup_expression_id): Likewise.
      	(phi_trans_lookup): Likewise.
      	(phi_trans_add): Likewise.
      	* stringpool.c: Rename uses of libcpp typedef hash_table to
      	cpp_hash_table.
      	* Makefile.in: Add hash-table.o to OBJS-libcommon-target.
      	Add $(HASH_TABLE_H). Add new dependences on $(HASH_TABLE_H).
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge from cxx-conversion branch.  Re-write double_int in C++.
      
      	* hash-table.h
      	(typedef double_int): Change to struct (POD).
      	(double_int::make): New overloads for int to double-int conversion.
      	(double_int::mask): New.
      	(double_int::max_value): New.
      	(double_int::min_value): New.
      	(double_int::operator ++): New.
      	(double_int::operator --): New.
      	(double_int::operator *=): New.
      	(double_int::operator +=): New.
      	(double_int::operator -=): New.
      	(double_int::to_signed): New.
      	(double_int::to_unsigned): New.
      	(double_int::fits_unsigned): New.
      	(double_int::fits_signed): New.
      	(double_int::fits): New.
      	(double_int::trailing_zeros): New.
      	(double_int::popcount): New.
      	(double_int::multiple_of): New.
      	(double_int::set_bit): New.
      	(double_int::mul_with_sign): New.
      	(double_int::operator * (binary)): New.
      	(double_int::operator + (binary)): New.
      	(double_int::operator - (binary)): New.
      	(double_int::operator - (unary)): New.
      	(double_int::operator ~ (unary)): New.
      	(double_int::operator & (binary)): New.
      	(double_int::operator | (binary)): New.
      	(double_int::operator ^ (binary)): New.
      	(double_int::and_not): New.
      	(double_int::lshift): New.
      	(double_int::rshift): New.
      	(double_int::alshift): New.
      	(double_int::arshift): New.
      	(double_int::llshift): New.
      	(double_int::lrshift): New.
      	(double_int::lrotate): New.
      	(double_int::rrotate): New.
      	(double_int::div): New.
      	(double_int::sdiv): New.
      	(double_int::udiv): New.
      	(double_int::mod): New.
      	(double_int::smod): New.
      	(double_int::umod): New.
      	(double_int::divmod): New.
      	(double_int::sdivmod): New.
      	(double_int::udivmod): New.
      	(double_int::ext): New.
      	(double_int::zext): New.
      	(double_int::sext): New.
      	(double_int::is_zero): New.
      	(double_int::is_one): New.
      	(double_int::is_minus_one): New.
      	(double_int::is_negative): New.
      	(double_int::cmp): New.
      	(double_int::ucmp): New.
      	(double_int::scmp): New.
      	(double_int::ult): New.
      	(double_int::ugt): New.
      	(double_int::slt): New.
      	(double_int::sgt): New.
      	(double_int::max): New.
      	(double_int::smax): New.
      	(double_int::umax): New.
      	(double_int::min): New.
      	(double_int::smin): New.
      	(double_int::umin): New.
      	(double_int::operator ==): New.
      	(double_int::operator !=): New.
      	(shwi_to_double_int): Change implementation to use member function.
      	(double_int_minus_one): Likewise.
      	(double_int_zero): Likewise.
      	(double_int_one): Likewise.
      	(double_int_two): Likewise.
      	(double_int_ten): Likewise.
      	(uhwi_to_double_int): Likewise.
      	(double_int_to_shwi): Likewise.
      	(double_int_to_uhwi): Likewise.
      	(double_int_fits_in_uhwi_p): Likewise.
      	(double_int_fits_in_shwi_p): Likewise.
      	(double_int_fits_in_hwi_p): Likewise.
      	(double_int_mul): Likewise.
      	(double_int_mul_with_sign): Likewise.
      	(double_int_add): Likewise.
      	(double_int_sub): Likewise.
      	(double_int_neg): Likewise.
      	(double_int_div): Likewise.
      	(double_int_sdiv): Likewise.
      	(double_int_udiv): Likewise.
      	(double_int_mod): Likewise.
      	(double_int_smod): Likewise.
      	(double_int_umod): Likewise.
      	(double_int_divmod): Likewise.
      	(double_int_sdivmod): Likewise.
      	(double_int_udivmod): Likewise.
      	(double_int_multiple_of): Likewise.
      	(double_int_setbit): Likewise.
      	(double_int_ctz): Likewise.
      	(double_int_not): Likewise.
      	(double_int_ior): Likewise.
      	(double_int_and): Likewise.
      	(double_int_and_not): Likewise.
      	(double_int_xor): Likewise.
      	(double_int_lshift): Likewise.
      	(double_int_rshift): Likewise.
      	(double_int_lrotate): Likewise.
      	(double_int_rrotate): Likewise.
      	(double_int_cmp): Likewise.
      	(double_int_scmp): Likewise.
      	(double_int_ucmp): Likewise.
      	(double_int_max): Likewise.
      	(double_int_smax): Likewise.
      	(double_int_umax): Likewise.
      	(double_int_min): Likewise.
      	(double_int_smin): Likewise.
      	(double_int_umin): Likewise.
      	(double_int_ext): Likewise.
      	(double_int_sext): Likewise.
      	(double_int_zext): Likewise.
      	(double_int_mask): Likewise.
      	(double_int_max_value): Likewise.
      	(double_int_min_value): Likewise.
      	(double_int_zero_p): Likewise.
      	(double_int_one_p): Likewise.
      	(double_int_minus_one_p): Likewise.
      	(double_int_equal_p): Likewise.
      	(double_int_popcount): Likewise.
      	* hash-table.c
      	(double_int_mask): Reuse implementation for double_int::mask.
      	(double_int_max_value): Likewise.
      	(double_int_min_value): Likewise.
      	(double_int_ext): Likewise.
      	(double_int_zext): Likewise.
      	(double_int_sext): Likewise.
      	(double_int_mul_with_sign): Likewise.
      	(double_int_divmod): Likewise.
      	(double_int_sdivmod): Likewise.
      	(double_int_udivmod): Likewise.
      	(double_int_div): Likewise.
      	(double_int_sdiv): Likewise.
      	(double_int_udiv): Likewise.
      	(double_int_mod): Likewise.
      	(double_int_smod): Likewise.
      	(double_int_umod): Likewise.
      	(double_int_multiple_of): Likewise.
      	(double_int_lshift): Likewise.
      	(double_int_rshift): Likewise.
      	(double_int_lrotate): Likewise.
      	(double_int_rrotate): Likewise.
      	(double_int_cmp): Likewise.
      	(double_int_ucmp): Likewise.
      	(double_int_scmp): Likewise.
      	(double_int_max): Likewise.
      	(double_int_smax): Likewise.
      	(double_int_umax): Likewise.
      	(double_int_min): Likewise.
      	(double_int_smin): Likewise.
      	(double_int_umin): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int_min): Likewise.
      	(double_int::alshift): New.
      	(double_int::arshift): New.
      	(double_int::llshift): New.
      	(double_int::lrshift): New.
      	(double_int::ult): New.
      	(double_int::ugt): New.
      	(double_int::slt): New.
      	(double_int::sgt): New.
      	(double_int_setbit): Reuse implementation for double_int::set_bit,
      	which avoids a name conflict with a macro.
      	(double_int_double_int_ctz): Reuse implementation for
      	double_int::trailing_zeros.
      	(double_int_fits_in_shwi_p): Reuse implementation for
      	double_int::fits_signed.
      	(double_int_fits_in_hwi_p): Reuse implementation for double_int::fits.
      	(double_int_mul): Reuse implementation for binary
      	double_int::operator *.
      	(double_int_add): Likewise.
      	(double_int_sub): Likewise.
      	(double_int_neg): Reuse implementation for unary
      	double_int::operator -.
      	(double_int_max_value): Likewise.
      	* fixed-value.c: Change to use member functions introduced above.
      
      2012-08-14   Lawrence Crowl  <crowl@google.com>
      
      	Merge cxx-conversion branch.  Support tree macro calling
      	from gdb.
      
      	* tree.h (tree_check): New.
      	(TREE_CHECK): Use inline function above instead of __extension__.
      	(tree_not_check): New.
      	(TREE_NOT_CHECK): Use inline function above instead of __extension__.
      	(tree_check2): New.
      	(TREE_CHECK2): Use inline function above instead of __extension__.
      	(tree_not_check2): New.
      	(TREE_NOT_CHECK2): Use inline function above instead of __extension__.
      	(tree_check3): New.
      	(TREE_CHECK3): Use inline function above instead of __extension__.
      	(tree_not_check3): New.
      	(TREE_NOT_CHECK3): Use inline function above instead of __extension__.
      	(tree_check4): New.
      	(TREE_CHECK4): Use inline function above instead of __extension__.
      	(tree_not_check4): New.
      	(TREE_NOT_CHECK4): Use inline function above instead of __extension__.
      	(tree_check5): New.
      	(TREE_CHECK5): Use inline function above instead of __extension__.
      	(tree_not_check5): New.
      	(TREE_NOT_CHECK5): Use inline function above instead of __extension__.
      	(contains_struct_check): New.
      	(CONTAINS_STRUCT_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_class_check): New.
      	(TREE_CLASS_CHECK): Use inline function above instead of __extension__.
      	(tree_range_check): New.
      	(TREE_RANGE_CHECK): Use inline function above instead of __extension__.
      	(omp_clause_subcode_check): New.
      	(OMP_CLAUSE_SUBCODE_CHECK): Use inline function above instead of
      	__extension__.
      	(omp_clause_range_check): New.
      	(OMP_CLAUSE_RANGE_CHECK): Use inline function above instead of
      	__extension__.
      	(expr_check): New.
      	(EXPR_CHECK): Use inline function above instead of __extension__.
      	(non_type_check): New.
      	(NON_TYPE_CHECK): Use inline function above instead of __extension__.
      	(tree_vec_elt_check): New.
      	(TREE_VEC_ELT_CHECK): Use inline function above instead of
      	__extension__.
      	(omp_clause_elt_check): New.
      	(OMP_CLAUSE_ELT_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_operand_check): New.
      	(TREE_OPERAND_CHECK): Use inline function above instead of
      	__extension__.
      	(tree_operand_check_code): New.
      	(TREE_OPERAND_CHECK_CODE): Use inline function above instead of
      	__extension__.
      	(TREE_CHAIN): Simplify implementation.
      	(TREE_TYPE): Simplify implementation.
      	(tree_operand_length): Move for compilation dependences.
      	* gdbinit.in: (macro define __FILE__): New.
      	(macro define __LINE__): New.
      	(skip "tree.h"): New.
      
      gcc/cp/ChangeLog
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Re-write VEC in C++.
      
      	* call.c (add_function_candidate): Remove const qualifier
      	from call to VEC_index.
      
      2012-08-14   Diego Novillo  <dnovillo@google.com>
      
      	Merge from cxx-conversion branch.  Configury.
      
      	* go-c.h: Remove all handlers of ENABLE_BUILD_WITH_CXX.
      	* go-gcc.cc: Likewise.
      	* go-system.h: Likewise.
      
      From-SVN: r190402
      0823efed
  11. Apr 30, 2012
    • Dodji Seketeli's avatar
      Switch -ftrack-macro-expansion=2 on by default. · 51fce2d3
      Dodji Seketeli authored
      This switches the compiler to -ftrack-macro-expansion=2 by default.
      
      Tested and bootstrapped on x86_64-unknown-linux-gnu against trunk.
      
      libcpp/
      
      	* init.c (cpp_create_reader): Switch -ftrack-macro-expansion=2 on
      	by default.  Add comments.
      
      gcc/docs/
      
      	* cppopts.texi: Adjust for enabling -ftrack-macro-expansion=2 by
      	default.
      
      From-SVN: r186977
      51fce2d3
  12. Apr 27, 2012
    • Ollie Wild's avatar
      Add new option, -Wliteral-suffix. · 7f5f5f98
      Ollie Wild authored
      This option, which is enabled by default, causes the preprocessor to warn
      when a string or character literal is followed by a ud-suffix which does
      not begin with an underscore.  According to [lex.ext]p10, this is
      ill-formed.
      
      Also modifies the preprocessor to treat such ill-formed suffixes as separate
      preprocessing tokens.  This is consistent with the Clang front end (see
      http://llvm.org/viewvc/llvm-project?view=rev&revision=152287), and enables
      backwards compatibility with code that uses formatting macros from
      <inttypes.h>, as in the following code block:
      
        int main() {
          int64_t i64 = 123;
          printf("My int64: %"PRId64"\n", i64);
        }
      
      Google ref b/6377711.
      
      2012-04-27   Ollie Wild  <aaw@google.com>
      
      	PR c++/52538
      	* gcc/c-family/c-common.c: Add CPP_W_LITERAL_SUFFIX mapping.
      	* gcc/c-family/c-opts.c (c_common_handle_option): Handle
      	OPT_Wliteral_suffix.
      	* gcc/c-family/c.opt: Add Wliteral-suffix.
      	* gcc/doc/invoke.texi (Wliteral-suffix): Document new option.
      	* gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.c: New test.
      	* libcpp/include/cpplib.h (struct cpp_options): Add new field,
      	warn_literal_suffix.
      	(CPP_W_LITERAL_SUFFIX): New enum.
      	* libcpp/init.c (cpp_create_reader): Default initialization of
      	warn_literal_suffix.
      	* libcpp/lex.c (lex_raw_string): Treat user-defined literals which
      	don't begin with '_' as separate tokens and produce a warning.
      	(lex_string): Ditto.
      
      From-SVN: r186909
      7f5f5f98
  13. Dec 20, 2011
    • Joseph Myers's avatar
      gcc: · 48b0b196
      Joseph Myers authored
      	* c-decl.c (diagnose_mismatched_decls, grokdeclarator, grokfield)
      	(finish_struct): Refer to C11 in comments.  Use flag_isoc11.
      	* c-parser.c (c_parser_static_assert_declaration)
      	(c_parser_static_assert_declaration_no_semi, c_parser_declspecs)
      	(c_parser_alignas_specifier, c_parser_alignof_expression): Refer
      	to C11 in comments.  Use flag_isoc11.
      	* c-typeck.c (comptypes_check_different_types): Refer to C11 in
      	comment.
      	* doc/cpp.texi (Overview): Refer to -std=c11 instead of -std=c1x.
      	* doc/cppopts.texi (-std=c11, -std=gnu11): Document in preference
      	to -std=c1x and -std=gnu1x.
      	* doc/extend.texi (Inline, Alternate Keywords, Other Builtins)
      	(__builtin_complex, Unnamed Fields): Refer to -std=c11 and C11
      	instead of -std=c1x and C1X.
      	* doc/invoke.texi (-std=c11, -std=iso9899:2011): Document in
      	preference to -std=c1x.
      	(-std=gnu11): Document in preference to -std=gnu1x.
      	* doc/standards.texi: Document C11 instead of C1X.  Document C11
      	as actual standard.  Document headers required from freestanding
      	C11 implementations.
      	* ginclude/float.h, ginclude/stddef.h: Test __STDC_VERSION__ >=
      	201112L for C11.  Update comments to refer to C11.
      
      gcc/c-family:
      	* c-common.c (flag_isoc99): Update comment to refer to C11.
      	(flag_isoc1x): Change to flag_isoc11.
      	* c-common.h (flag_isoc99): Update comment to refer to C11.
      	(flag_isoc1x): Change to flag_isoc11.
      	* c-cppbuiltin.c (cpp_atomic_builtins): Change comment to refer to
      	C11.
      	* c-opts.c (set_std_c1x): Change to set_std_c11.
      	(c_common_handle_option): Handle OPT_std_c11 and OPT_std_gnu11.
      	Call set_std_c11.
      	(set_std_c89, set_std_c99, set_std_c11): Use flag_isoc11.
      	(set_std_c1): Use CLK_STDC11 and CLK_GNUC11.
      	* c.opt (std=c1x): Change to std=c11.  Document as non-draft
      	standard.
      	(std=c1x, std=iso9899:2011): Add as aliases of std=c11.
      	(std=gnu1x): Change to std=gnu11.  Refer to non-draft standard.
      	(std=gnu1x): Make alias of std=gnu11.
      
      gcc/testsuite:
      	* gcc.dg/c11-version-1.c, gcc.dg/c11-version-2.c,
      	gcc.dg/c94-version-1.c, gcc.dg/c99-version-1.c,
      	gcc.dg/gnu11-version-1.c: New tests.
      
      libcpp:
      	* include/cpplib.h (CLK_GNUC1X): Change to CLK_GNUC11.
      	(CLK_STDC1X): Change to CLK_STDC11.
      	* init.c (lang_defaults): Update comments.
      	(cpp_init_builtins): Update language tests.  Use 201112L for C11
      	__STDC_VERSION__.
      
      From-SVN: r182551
      48b0b196
  14. Dec 07, 2011
  15. Oct 31, 2011
    • Jason Merrill's avatar
      re PR libstdc++/1773 (__cplusplus defined to 1, should be 199711L) · 1fb80b0c
      Jason Merrill authored
      	PR libstdc++/1773
      	* init.c (cpp_init_builtins): Set __cplusplus for C++11.
      
      From-SVN: r180708
      1fb80b0c
    • Jason Merrill's avatar
      re PR c++/50920 (add a -std=c++11 option to the driver) · 97e3ad20
      Jason Merrill authored
      	PR c++/50920
      gcc/c-family
      	* c-common.h (cxx_dialect): Add cxx11 and cxx03.
      	* c.opt: Add -std=c++11, -std=gnu++11, -std=gnu++03,
      	and -Wc++11-compat.
      	* c-opts.c (set_std_cxx11): Rename from set_std_cxx0x.
      gcc/cp
      	* class.c (check_field_decl): Change c++0x in diags to c++11.
      	* error.c (maybe_warn_cpp0x): Likewise.
      	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
      	* pt.c (check_default_tmpl_args): Likewise.
      libcpp
      	* include/cpplib.h (enum c_lang): Rename CLK_CXX0X to CLK_CXX11,
      	CLK_GNUCXX0X to CLK_GNUCXX11.
      libstdc++-v3
      	* include/bits/c++0x_warning.h: Change -std=c++0x to -std=c++11.
      
      From-SVN: r180707
      97e3ad20
  16. Oct 26, 2011
    • Ed Smith-Rowland's avatar
      Implement C++11 user-defined literals. · 3ce4f9e4
      Ed Smith-Rowland authored
      libcpp/
      	* expr.c: (cpp_interpret_float_suffix, cpp_interpret_int_suffix,
      	cpp_userdef_string_remove_type, cpp_userdef_string_add_type,
      	cpp_userdef_char_remove_type, cpp_userdef_char_add_type,
      	cpp_userdef_string_p, cpp_userdef_char_p, cpp_get_userdef_suffix): New.
      	(cpp_classify_number): Classify unrecognized tokens as user-defined
      	literals.
      	* include/cpplib.h: Add new tokens for user-defined literals.
      	* init.c: Add new preprocessor flag (cxx11).
      	* lex.c: (lex_string, lex_raw_string): Handle user-defined literals
      	including concatenation and promotion with suffixes.
      c-family/
      	* c-common.c (build_userdef_literal): New.
      	* c-common.def: New tree code.
      	* c-common.h (tree_userdef_literal): New tree struct and accessors.
      	* c-lex.c (interpret_float): Add suffix parm.
      	(c_lex_with_flags): Build literal tokens.
      cp/
      	* cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
      	* cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
      	name tools. New tree code for user-defined literals.
      	* cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
      	* cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
      	(pp_cxx_primary_expression, pp_cxx_expression): Use it.
      	* decl.c: (cp_tree_node_structure): Return new tree code.
      	(duplicate_decls): Check for raw vs. template operator conflicts.
      	(grokfndecl, grokdeclarator): New checks for literal operators.
      	* error.c: (dump_expr): Warn about user-defined literals
      	in C++98 mode. (dump_function_name): Pretty printing.
      	* mangle.c: (write_literal_operator_name): New.
      	(write_unqualified_id, write_unqualified_name): Use it.
      	* parser.c: (cp_parser_operator): Handle operator"".
      	(cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
      	cp_parser_userdef_string_literal): New.
      	(cp_parser_primary_expression): Handle new user-defined literal tokens
      	with new functions.
      	* semantics.c: (potential_constant_expression_1): Add
      	user-defined literals.
      	* typeck.c (check_raw_literal_operator,
      	check_literal_operator_args): New.
      
      From-SVN: r180536
      3ce4f9e4
  17. Oct 17, 2011
    • Tom Tromey's avatar
      Generate virtual locations for tokens · 92582b75
      Tom Tromey authored
      This second instalment uses the infrastructure of the previous patch
      to allocate a macro map for each macro expansion and assign a virtual
      location to each token resulting from the expansion.
      
      To date when cpp_get_token comes across a token that happens to be a
      macro, the macro expander kicks in, expands the macro, pushes the
      resulting tokens onto a "token context" and returns a dummy padding
      token. The next call to cpp_get_token goes look into the token context
      for the next token [which is going to result from the previous macro
      expansion] and returns it.  If the token is a macro, the macro expander
      kicks in and you know the story.
      
      This patch piggy-backs on that macro expansion process, so to speak.
      First it modifies the macro expander to make it create a macro map for
      each macro expansion. It then allocates a virtual location for each
      resulting token.  Virtual locations of tokens resulting from macro
      expansions are then stored on a special kind of context called an
      "expanded tokens context".  In other words, in an expanded tokens
      context, there are tokens resulting from macro expansion and their
      associated virtual locations.  cpp_get_token_with_location is modified
      to return the virtual location of tokens resulting from macro
      expansion.  Note that once all tokens from an expanded token context have
      been consumed and the context and is freed, the memory used to store the
      virtual locations of the tokens held in that context is freed as well.
      This helps reducing the overall peak memory consumption.
      
      The client code that was getting macro expansion point location from
      cpp_get_token_with_location now gets virtual location from it. Those
      virtual locations can in turn be resolved into the different
      interesting physical locations thanks to the linemap API exposed by
      the previous patch.
      
      Expensive progress. Possibly. So this whole virtual location
      allocation business is switched off by default. So by default no
      extended token is created. No extended token context is created
      either. One has to use -ftrack-macro-expansion to switch this on. This
      complicates the code but I believe it can be useful as some of our
      friends found out at http://llvm.org/bugs/show_bug.cgi?id=5610
      
      
      
      The patch tries to reduce the memory consumption by freeing some token
      context memory that was being reused before. I didn't notice any
      compilation slow down due to this immediate freeing on my GNU/Linux
      system.
      
      As no client code tries to resolve virtual locations to anything but
      what was being done before, no new test case has been added.
      
      Co-Authored-By: default avatarDodji Seketeli <dodji@redhat.com>
      
      From-SVN: r180082
      92582b75
    • Tom Tromey's avatar
      Linemap infrastructure for virtual locations · 46427374
      Tom Tromey authored
      This is the first instalment of a set which goal is to track locations
      of tokens across macro expansions.  Tom Tromey did the original work
      and attached the patch to PR preprocessor/7263.  This opus is a
      derivative of that original work.
      
      This patch modifies the linemap module of libcpp to add virtual
      locations support.
      
      A virtual location is a mapped location that can resolve to several
      different physical locations.  It can always resolve to the spelling
      location of a token.  For tokens resulting from macro expansion it can
      resolve to:
        - either the location of the expansion point of the macro.
        - or the location of the token in the definition of the
        macro
        - or, if the token is an argument of a function-like macro,
        the location of the use of the matching macro parameter in
        the definition of the macro
      
      The patch creates a new type of line map called a macro map.  For every
      single macro expansion, there is a macro map that generates a virtual
      location for every single resulting token of the expansion.
      
      The good old type of line map we all know is now called an ordinary
      map.  That one still encodes spelling locations as it has always had.
      
      As a result linemap_lookup as been extended to return a macro map when
      given a virtual location resulting from a macro expansion.  The layout
      of structs line_map has changed to support this new type of map.  So
      did the layout of struct line_maps.  Accessor macros have been
      introduced to avoid messing with the implementation details of these
      datastructures directly.  This helped already as we have been testing
      different ways of arranging these datastructure.  Having to constantly
      adjust client code that is too tied with the internals of line_map and
      line_maps would have been even more painful.
      
      Of course, many new public functions have been added to the linemap
      module to handle the resolution of virtual locations.
      
      This patch introduces the infrastructure but no part of the compiler
      uses virtual locations yet.
      
      However the client code of the linemap data structures has been
      adjusted as per the changes.  E.g, it's not anymore reliable for a
      client code to manipulate struct line_map directly if it just wants to
      deal with spelling locations, because struct line_map can now
      represent a macro map as well.  In that case, it's better to use the
      convenient API to resolve the initial (possibly virtual) location to a
      spelling location (or to an ordinary map) and use that.
      
      This is the reason why the patch adjusts the Java, Ada and Fortran
      front ends.
      
      Also, note that virtual locations are not supposed to be ordered for
      relations '<' and '>' anymore.  To test if a virtual location appears
      "before" another one, one has to use a new operator exposed by the
      line map interface.  The patch updates the only spot (in the
      diagnostics module) I have found that was making the assumption that
      locations were ordered for these relations.  This is the only change
      that introduces a use of the new line map API in this patch, so I am
      adding a regression test for it only.
      
      From-SVN: r180081
      46427374
  18. Aug 22, 2011
    • Gabriel Charette's avatar
      Add ability to force lexed tokens' source_locations. · e3dfef44
      Gabriel Charette authored
      Use it to force BUILTINS_LOCATION when declaring builtins instead of creating a <built-in> entry in the line_table which is wrong.
      
      	* c-opts.c (c_finish_options): Force BUILTINS_LOCATION for tokens
      	defined in cpp_init_builtins and c_cpp_builtins.
      
      	gcc/fortran/ChangeLog
      	* cpp.c (gfc_cpp_init): Force BUILTINS_LOCATION for tokens
      	defined in cpp_define_builtins.
      
      	libcpp/ChangeLog
      	* init.c (cpp_create_reader): Inititalize forced_token_location_p.
      	* internal.h (struct cpp_reader): Add field forced_token_location_p.
      	* lex.c (_cpp_lex_direct): Use forced_token_location_p.
      	(cpp_force_token_locations): New.
      	(cpp_stop_forcing_token_locations): New.
      
      From-SVN: r177973
      e3dfef44
  19. Aug 18, 2011
    • Rainer Orth's avatar
      Properly define __cplusplus (PR libstdc++-v3/1773) · 32fe396e
      Rainer Orth authored
      	PR libstdc++/1773
      	* init.c (cpp_init_builtins): Define __cplusplus 19971L.
      
      From-SVN: r177877
      32fe396e
    • Joseph Myers's avatar
      c1x-uni-string-1.c, [...]: New tests. · a48e3dd1
      Joseph Myers authored
      gcc/testsuite:
      	* gcc.dg/c1x-uni-string-1.c, gcc.dg/c1x-uni-string-2.c: New tests.
      
      libcpp:
      	* include/cpplib.h (struct cpp_options): Add rliterals.
      	* init.c  (struct lang_flags, lang_defaults): Add rliterals.
      	(cpp_set_lang): Set rliterals option.
      	(cpp_init_builtins): Define __STDC_UTF_16__ and __STDC_UTF_32__.
      	* lex.c (_cpp_lex_direct): Only accept raw strings if rliterals.
      
      From-SVN: r177868
      a48e3dd1
  20. Apr 20, 2011
    • Jim Meyering's avatar
      remove useless if-before-free tests · 04695783
      Jim Meyering authored
      Change "if (E) free (E);" to "free (E);" everywhere except in the
      libgo/, intl/, zlib/ and classpath/ directories.
      Also transform equivalent variants like
      "if (E != NULL) free (E);" and allow an extra cast on the
      argument to free.  Otherwise, the tested and freed "E"
      expressions must be identical, modulo white space.
      
      From-SVN: r172785
      04695783
  21. Mar 25, 2011
    • Kai Tietz's avatar
      files.c (file_hash_eq): Use filename_cmp instead of strcmp. · 4489800d
      Kai Tietz authored
      2011-03-25  Kai Tietz  <ktietz@redhat.com>
      
      	* files.c (file_hash_eq): Use filename_cmp
      	instead of strcmp.
      	(nonexistent_file_hash_eq): Likewise.
      	(remap_filename): Likewise.
      	Handle absolute DOS-path,
      	(append_file_to_dir): Check for IS_DIR_SEPARATOR
      	instead of slash.
      	(read_name_map): Likewise.
      	* linemap.c (linemap_add): Use filename_cmp
      	instead of strcmp.
      	* mkdeps.c (apply_vpath): Use filename_ncmp
      	instead of strncmp.
      	(deps_restore): Use filename_cmp instead of
      	strcmp.
      	* init.c (read_original_directory): Use
      	IS_DIR_SEPARATOR instead of checking for slash.
      
      From-SVN: r171521
      4489800d
  22. Sep 29, 2010
    • Joseph Myers's avatar
      optc-gen.awk: Generate global_options initializer instead of individual variables. · e3339d0f
      Joseph Myers authored
      gcc:
      	* optc-gen.awk: Generate global_options initializer instead of
      	individual variables.  Add x_ prefix to names of structure
      	members.
      	* opth-gen.awk: Generate gcc_options structure.  Add x_ prefix to
      	names of structure members.
      	* doc/tm.texi.in (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Document.
      	* doc/tm.texi: Regenerate.
      	* alias.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* builtins.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER.
      	* c-parser.c (disable_extension_diagnostics,
      	restore_extension_diagnostics): Update names of cpp_options
      	members.
      	* combine.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* common.opt (fcompare-debug-second): Don't use Var.
      	* config/alpha/alpha.h (target_flags): Remove.
      	* config/arm/arm.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define.
      	* config/bfin/bfin.h (target_flags): Remove.
      	* config/cris/cris.h (target_flags): Remove.
      	* config/i386/i386-c.c (ix86_pragma_target_parse): Update names of
      	cl_target_option members.
      	* config/i386/i386.c (ix86_force_align_arg_pointer): Remove.
      	(ix86_function_specific_print, ix86_valid_target_attribute_tree,
      	ix86_can_inline_p): Update names of cl_target_option members.
      	* config/i386/i386.h (ix86_isa_flags): Remove.
      	* config/lm32/lm32.h (target_flags): Remove.
      	* config/mcore/mcore.h (mcore_stack_increment): Remove.
      	* config/mcore/mcore.md (addsi3): Remove extern declaration of
      	flag_omit_frame_pointer.
      	* config/mep/mep.h (target_flags): Remove.
      	* config/mips/mips.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define.
      	* config/mmix/mmix.h (target_flags): Remove.
      	* config/rs6000/rs6000.h (rs6000_xilinx_fpu, flag_pic,
      	flag_expensive_optimizations): Remove.
      	* config/s390/s390.h (flag_pic): Remove.
      	* config/score/score-conv.h (target_flags): Remove.
      	* config/sh/sh.h (sh_fixed_range_str): Remove.
      	* config/spu/spu.h (target_flags, spu_fixed_range_string): Remove.
      	* dbxout.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER
      	* df-scan.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* diagnostic.c (diagnostic_initialize): Update names of
      	diagnostic_context members.
      	* diagnostic.h (diagnostic_context): Rename inhibit_warnings and
      	warn_system_headers.
      	(diagnostic_report_warnings_p): Update for new names.
      	* dwarf2out.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER
      	* emit-rtl.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER and
      	HARD_FRAME_POINTER_IS_ARG_POINTER.
      	* flags.h (flag_compare_debug): Declare.
      	* ira.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* opts.c (flag_compare_debug): Define.
      	(common_handle_option): Update names of diagnostic_context
      	members.  Handle -fcompare-debug-second.
      	(fast_math_flags_struct_set_p): Update names of cl_optimization
      	members.
      	* reginfo.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* regrename.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* reload.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* reload1.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* resource.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* rtl.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define and use.
      	* sel-sched.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* stmt.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER.
      
      gcc/c-family:
      	* c-common.c (c_cpp_error): Update names of diagnostic_context
      	members.
      	* c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Update names of
      	cl_optimization members.
      	* c-opts.c (warning_as_error_callback, c_common_handle_option,
      	sanitize_cpp_opts, finish_options): Update names of cpp_options
      	members.
      
      gcc/fortran:
      	* cpp.c (cpp_define_builtins): Update names of gfc_option_t
      	members.
      	(gfc_cpp_post_options): Update names of cpp_options members.
      	(cb_cpp_error): Update names of diagnostic_context members.
      	* f95-lang.c (gfc_init_builtin_functions): Update names of
      	gfc_option_t members.
      	* gfortran.h (gfc_option_t): Rename warn_conversion and
      	flag_openmp.
      	* intrinsic.c (gfc_convert_type_warn): Update names of
      	gfc_option_t members.
      	* options.c (gfc_init_options, gfc_post_options, set_Wall,
      	gfc_handle_option): Update names of gfc_option_t members.
      	* parse.c (next_free, next_fixed): Update names of gfc_option_t
      	members.
      	* scanner.c (pedantic): Remove extern declaration.
      	(skip_free_comments, skip_fixed_comments, include_line): Update
      	names of gfc_option_t members.
      	* trans-decl.c (gfc_generate_function_code): Update names of
      	gfc_option_t members.
      
      gcc/java:
      	* java-tree.h (flag_filelist_file, flag_assert, flag_jni,
      	flag_force_classes_archive_check, flag_redundant, flag_newer,
      	flag_use_divide_subroutine, flag_use_atomic_builtins,
      	flag_use_boehm_gc, flag_hash_synchronization,
      	flag_check_references, flag_optimize_sci, flag_indirect_classes,
      	flag_indirect_dispatch, flag_store_check,
      	flag_reduced_reflection): Remove.
      	* jcf-dump.c (flag_newer): Remove.
      	* jcf.h (quiet_flag): Remove.
      	* parse.h (quiet_flag): Remove.
      
      libcpp:
      	* include/cpplib.h (cpp_options): Rename warn_deprecated,
      	warn_traditional, warn_long_long and pedantic.
      	* directives.c (directive_diagnostics, _cpp_handle_directive):
      	Update names of cpp_options members.
      	* expr.c (cpp_classify_number, eval_token): Update names of
      	cpp_options members.
      	* init.c (cpp_create_reader, post_options): Update names of
      	cpp_options members.
      	* internal.h (CPP_PEDANTIC, CPP_WTRADITIONAL): Update names of
      	cpp_options members.
      	* macro.c (parse_params): Update names of cpp_options members.
      
      From-SVN: r164723
      e3339d0f
  23. Sep 15, 2010
  24. Jun 10, 2010
    • Joseph Myers's avatar
      common.opt (fshow-column): Don't mark as C ObjC C++ ObjC++. · 1cb42611
      Joseph Myers authored
      gcc:
      	* common.opt (fshow-column): Don't mark as C ObjC C++ ObjC++.
      
      gcc/c-family:
      	* c-opts.c (c_common_handle_option): Don't handle
      	OPT_fshow_column.
      
      libcpp:
      	* include/cpplib.h (struct cpp_options): Remove show_column.
      	* init.c (cpp_create_reader, post_options): Don't set show_column.
      
      From-SVN: r160553
      1cb42611
  25. Apr 25, 2010
    • Joseph Myers's avatar
      c-common.c (flag_isoc1x): New. · 2778d766
      Joseph Myers authored
      gcc:
      	* c-common.c (flag_isoc1x): New.
      	(flag_isoc99): Update comment.
      	* c-common.h (flag_isoc1x): New.
      	(flag_isoc99): Update comment.
      	* c-cppbuiltin.c (builtin_define_float_constants): Also define
      	__<type>_DECIMAL_DIG__.
      	* c-opts.c (set_std_c1x): New.
      	(c_common_handle_option): Handle -std=c1x and -std=gnu1x.
      	(set_std_c89, set_std_c99): Also set flag_isoc1x to 0.
      	* c.opt (-std=c1x, -std=gnu1x): New options.
      	* doc/cpp.texi: Mention -std=c1x.
      	* doc/cppopts.texi (-std=c1x, -std=gnu1x): Document.
      	* doc/extend.texi: Mention -std=c1x and -std=gnu1x.
      	* doc/invoke.texi (-std=c1x, -std=gnu1x): Document.
      	* doc/standards.texi: Mention C1X.
      	* ginclude/float.h (FLT_DECIMAL_DIG, DBL_DECIMAL_DIG,
      	LDBL_DECIMAL_DIG, FLT_HAS_SUBNORM, DBL_HAS_SUBNORM,
      	LDBL_HAS_SUBNORM, FLT_TRUE_MIN, DBL_TRUE_MIN, LDBL_TRUE_MIN):
      	Define for C1X.
      
      gcc/testsuite:
      	* gcc.dg/c90-float-1.c: Also test that C1X macros are not defined.
      	* gcc.dg/c99-float-1.c: Also test that C1X macros are not defined.
      	* gcc.dg/c1x-float-1.c: New test.
      
      libcpp:
      	* include/cpplib.h (enum c_lang): Add CLK_GNUC1X and CLK_STDC1X.
      	* init.c (lang_defaults): Add entries for new language variants.
      	(cpp_init_builtins): Define __STDC_VERSION__ to 201000L for C1X
      	variants.
      
      From-SVN: r158711
      2778d766
  26. Feb 11, 2010
  27. Nov 11, 2009
    • Kai Tietz's avatar
      ChangeLog for libcpp · 17e7cb85
      Kai Tietz authored
      2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
      
      	* directives.c (do_pragma_push_macro): New pragma handler.
      	(do_pragma_pop_macro): Likewise.
      	(_cpp_init_internal_pragmas): Add push_macro and
      	pop_macro handler to internal pragmas.
      	(lex_macro_node_from_str): Removed.
      	(cpp_push_definition): Replace lex_macro_node_from_str
      	by _cpp_lex_identifier.
      	(cpp_pop_definition): Likewise.
      	* internal.h (_cpp_lex_identifier): New prototype.
      	(def_pragma_macro): New structure.
      	(cpp_reader): New member pushed_macros.
      	* lex.c (_cpp_lex_identifier): New function.
      	(lex_identifier_intern): New function.
      	* init.c (cpp_create_reader): Initialize pushed_macros
      	member.
      	(cpp_destroy): Free elements in pushed_macros member.
      	* pch.c (_cpp_save_pushed_macros): New function.
      	(_cpp_restore_pushed_macros): Likewise.
      	(_cpp_restore_pushed_macros): Use _cpp_save_pushed_macros.
      	(cpp_read_state): Use _cpp_restore_pushed_macros.
      
      ChangeLog for gcc
      
      2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
      
      	* config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO):
      	Removed.
      	* c-pragma.c (def_pragma_macro_value): Likewise.
      	(def_pragma_macro): Likewise.
      	(pushed_macro_table): Likewise.
      	(HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded
      	code.
      	* doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO):
      	Removed.
      
      ChangeLog for gcc/testsuite
      
      2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
      
      	* g++.dg/torture/pushpop_macro.C: New testcase.
      	* gcc.c-torture/execute/pushpop_macro.c: New testcase.
      	* gcc.dg/cpp/pragma-pop_macro-1.c: Allow test for all
      	targets.
      
      From-SVN: r154098
      17e7cb85
  28. Jun 12, 2009
    • Ian Lance Taylor's avatar
      cpplib.h (struct cpp_options): Add warn_cxx_operator_names field. · 3d8b2a98
      Ian Lance Taylor authored
      libcpp/:
      	* include/cpplib.h (struct cpp_options): Add
      	warn_cxx_operator_names field.
      	(NODE_WARN_OPERATOR): Define.
      	(struct cpp_hashnode): Increase flags field to 10 bits, decrease
      	type to 6 bits.
      	* init.c (mark_named_operators): Add flags parameter.
      	(cpp_post_options): Pick flags value to pass to
      	mark_named_operators.
      	* lex.c (lex_identifier): If NODE_WARN_OPERATOR is set, warn that
      	identifier is an operator name in C++.
      gcc/:
      	* fold-const.c (fold_unary): Rename local variable and to
      	and_expr.
      	* c-opts.c (c_common_handle_option): For -Wc++-compat set
      	cpp_opts->warn_cxx_operator_names.
      gcc/testsuite/:
      	* gcc.dg/Wcxx-compat-13.c: New testcase.
      
      From-SVN: r148438
      3d8b2a98
  29. May 16, 2009
    • Ian Lance Taylor's avatar
      alias.c (struct alias_set_entry_d): Rename from struct alias_set_entry. · 7e5487a2
      Ian Lance Taylor authored
      gcc/ChangeLog:
      	* alias.c (struct alias_set_entry_d): Rename from struct
      	alias_set_entry.  Change all uses.
      	* except.c (struct call_site_record_d): Rename from struct
      	call_site_record.  Change all uses.
      	* except.h (struct eh_region_d): Rename from struct eh_region.
      	Change all uses.
      	* gcse.c (struct hash_table_d): Rename from struct hash_table.
      	Change all uses.
      	* graphite.c (struct ivtype_map_elt_d): Rename fromstruct
      	ivtype_map_elt.  Change all uses.
      	(struct rename_map_elt_d): Rename fromstruct rename_map_elt.
      	Change all uses.
      	(struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
      	* graphite.h (struct name_tree_d): Rename from struct name_tree.
      	Change all uses.
      	(struct sese_d): Rename from struct sese.  Change all uses.
      	* omega.h (struct eqn_d): Rename from struct eqn.  Change all
      	uses.
      	(struct omega_pb_d): Rename from struct omega_pb.  Change all
      	uses.
      	* optabs.h (struct optab_d): Rename from struct optab.  Change all
      	uses.
      	(struct convert_optab_d): Rename from struct convert_optab.
      	Change all uses.
      	* tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
      	ipa_opt_pass.  Change all uses.
      	* tree-predcom.c (struct dref_d): Rename from struct dref.  Change
      	all uses.
      
      	* c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
      	defined as a typedef.
      	(grokdeclarator): If -Wc++-compat, warn if a typedef is already
      	defined as a tag.
      gcc/cp/ChangeLog:
      	* cp-tree.h (enum cp_lvalue_kind_flags): Rename from
      	cp_lvalue_kind.  Change all uses.
      	(enum base_access_flags): Rename from enum base_access.  Change
      	all uses.
      	* parser.c (enum cp_parser_flags): Remove enum tag.
      gcc/testsuite/ChangeLog:
      	* gcc.dg/Wcxx-compat-10.c: New testcase.
      libcpp/ChangeLog:
      	* include/cpplib.h (enum cpp_builtin_type): Rename from enum
      	builtin_type.  Change all uses.
      
      From-SVN: r147605
      7e5487a2
  30. Apr 22, 2009
    • Manuel López-Ibáñez's avatar
      re PR c++/14875 (When using 'or' keyword, the error message speaks of a '||' token) · cfc93532
      Manuel López-Ibáñez authored
      2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      
      	PR c++/14875
      	* c-common.c (c_parse_error): Take a token_flags parameter.
      	Use token_type for the token type instead.
      	Pass token_flags to cpp_type2name.
      	* c-common.h (c_parse_error): Update declaration.
      	* c-parser.c (c_parser_error): Pass 0 as token flags.
      libcpp/
      	* lex.c (cpp_type2name): Take a flags parameter. Call
      	cpp_named_operator2name for named operators and cpp_digraph2name
      	for digraphs.
      	(cpp_digraph2name): New.
      	(cpp_spell_token): Use it.
      	(cpp_output_token): Likewise.
      	* include/cpplib.h (cpp_type2name): Update declaration.
      	* init.c (cpp_named_operator2name): New.
      	* internal.h (cpp_named_operator2name): Declare.
      cp/	
      	* parser.c (cp_parser_error): Pass token->flags to c_parse_error.
      testsuite/
      	* g++.dg/parse/parser-pr14875.C: New.
      	* g++.dg/parse/parser-pr14875-2.C: New.
      	* g++.dg/parse/error6.C: Update match string.
      
      From-SVN: r146589
      cfc93532
  31. Apr 20, 2009
    • Manuel López-Ibáñez's avatar
      re PR c++/13358 (long long and C++ do not mix well) · 9c650d90
      Manuel López-Ibáñez authored
      2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      
      	PR c++/13358
      	* doc/invoke.texi (-Wlong-long): Update description.
      	* c-lex (interpret_integer): Only warn if there was no previous
      	overflow and -Wlong-long is enabled.
      	* c-decl.c (declspecs_add_type): Drop redundant flags.
      	* c.opt (Wlong-long): Init to -1.
      	* c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
      	and front-end warn_long_long. Wlong-long only depends on other
      	flags if it is uninitialized.
      	* c-parser.c (disable_extension_diagnostics): warn_long_long is
      	the same for CPP and FE.
      	(restore_extension_diagnostics): Likewise.
      libcpp/
      	* init.c (cpp_create_reader): Wlong_long is disabled by default.
      	* expr.c (cpp_classify_number): Give different messages for C and
      	C++ front-ends.
      cp/
      	* parser.c (cp_parser_check_decl_spec): Drop redundant flags.
      	* error.c (pedwarn_cxx98): New.
      	* cp-tree.h (pedwarn_cxx98): Declare.
      testsuite/
      	* gcc.dg/wtr-int-type-1.c: Use two dg-warning to match two
      	messages. Test for "long long" in system headers.
      	* gcc.dg/c99-longlong-2.c: New.
      	* g++.dg/warn/pr13358.C: New.
      	* g++.dg/warn/pr13358-2.C: New.
      	* g++.dg/warn/pr13358-3.C: New.
      	* g++.dg/warn/pr13358-4.C: New.
      
      From-SVN: r146459
      9c650d90
  32. Apr 09, 2009
  33. Mar 29, 2009
    • Joseph Myers's avatar
      re PR preprocessor/34695 (Preprocessor warning->error conversion from -Werror is silent) · 148e4216
      Joseph Myers authored
      	PR preprocessor/34695
      
      gcc:
      	* Makefile.in (c-opts.o): Depend on c-tree.h.
      	* c-common.c: Move down include of diagnostic.h.
      	(done_lexing, c_cpp_error): New.
      	* c-common.h (done_lexing): Declare.
      	* c-decl.c (c_write_global_declarations): Don't check cpp_errors
      	(parse_in).
      	* c-opts.c: Include c-tree.h.
      	(c_common_init_options): Set preprocessor error callback.
      	(c_common_handle_option): Do not set preprocessor
      	inhibit_warnings, warnings_are_errors, warn_system_headers,
      	pedantic_errors or inhibit_warnings flags.
      	(c_common_post_options): Do not check cpp_errors (parse_in).
      	(c_common_finish): Do not output dependencies if there were
      	errors.  Do not check return value of cpp_finish.
      	* c-ppoutput.c (pp_file_change): Set input_location.
      	* c-tree.h (c_cpp_error): Declare.
      	* diagnostic.c (diagnostic_set_info_translated): Also initialize
      	override_column.
      	(diagnostic_build_prefix): Check override_column.
      	* diagnostic.h (diagnostic_info): Add override_column field.
      	(diagnostic_override_column): Define.
      
      gcc/cp:
      	* cp-tree.h (cp_cpp_error): Remove.
      	* error.c (cp_cpp_error): Remove.
      	* parser.c (cp_lexer_new_main): Set done_lexing instead of
      	client_diagnostic and error callback.
      
      gcc/fortran:
      	* cpp.c (cb_cpp_error): New.
      	(gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
      	Don't check cpp_errors (cpp_in).
      	(gfc_cpp_init_0): Set cb->error.
      
      gcc/testsuite:
      	* gcc.dg/builtin-redefine.c, gcc.dg/cpp/redef2.c,
      	gcc.dg/cpp/redef3.c, gcc.dg/cpp/trad/redef2.c: Use dg-message
      	instead of dg-warning for "previous definition" messages.
      	* gcc.dg/cpp/Wvariadic-1.c, gcc.dg/cpp/Wvariadic-3.c: Expect
      	"warnings being treated as errors" message.
      	* gcc.dg/fltconst-1.c: Use -fshow-column.
      
      libcpp:
      	* makedepend.c: Remove.
      	* Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove.
      	(all, clean, TAGS_SOURCES, include): Remove makedepend handling.
      	* directives.c (cpp_errors): Remove.
      	* errors.c (print_location, _cpp_begin_message, v_message):
      	Remove.
      	(cpp_error, cpp_error_with_line): Always use error callback.
      	(cpp_error, cpp_error_with_line, cpp_errno): Return bool.
      	* include/cpplib.h (cpp_options): Remove pedantic_errors,
      	inhibit_warnings, warn_system_headers, inhibit_errors,
      	warnings_are_errors, client_diagnostic.
      	(cpp_callbacks): Add extra arguments to error callback; make it
      	return bool.
      	(cpp_finish): Return void.
      	(cpp_destroy): Remove inaccurate comment about return value.
      	(cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove.
      	(CPP_DL_NOTE): Define.
      	* include/line-map.h (linemap_print_containing_files): Remove.
      	* init.c (cpp_finish): Do not check for or return number of
      	errors.
      	* internal.h (cpp_reader): Remove errors field.
      	* line-map.c (linemap_print_containing_files): Remove.
      	* macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message
      	about previous definition.  Only emit it if previous diagnostic
      	was emitted.
      
      From-SVN: r145263
      148e4216
  34. Oct 05, 2008
    • Matthew Gingell's avatar
      cpplib.h (cpp_comments, [...]): New structs. · 631d0d36
      Matthew Gingell authored
      
      2008-10-05  Matthew Gingell  <gingell@adacore.com>
      	    Arnaud Charlet  <charlet@adacore.com>
      
      	* include/cpplib.h (cpp_comments, cpp_comment_table): New structs.
      	(cpp_get_comments): New function.
      	* internal.h (struct cpp_reader): Add comments field.
      	* init.c (cpp_destroy): Free comments.
      	* lex.c (store_comment, cpp_get_comments): New functions.
      	(comments): New struct.
      	(save_comment): Store comments in comments struct.
      
      Co-Authored-By: default avatarArnaud Charlet <charlet@adacore.com>
      
      From-SVN: r140883
      631d0d36
  35. Sep 18, 2008
    • Simon Baldwin's avatar
      cpplib.h (struct cpp_options): Add new boolean flag warn_builtin_macro_redefined. · c047ce93
      Simon Baldwin authored
      	* include/cpplib.h (struct cpp_options): Add new boolean flag
      	warn_builtin_macro_redefined.
      	* init.c (cpp_create_reader): Initialize warn_builtin_macro_redefined.
      	* (struct builtin_operator): Split out from previous struct builtin,
      	enhance extra const correctness.
      	* (struct builtin_macro): Split out from previous struct builtin, add
      	new always_warn_if_redefined flag, enhance const correctness.
      	* (mark_named_operators): Use struct builtin_operator.
      	* (cpp_init_special_builtins): Use struct builtin_macro, add NODE_WARN
      	to builtins selectively.
      	* macro.c (warn_of_redefinition): Return false if a builtin macro
      	is not flagged with NODE_WARN.
      
      	* c-opts.c (c_common_handle_option): Add handling for
      	-Wbuiltin-macro-redefined command line option.
      	* c.opt: Added builtin-macro-redefined option.
      	* doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
      	documentation.
      
      	* gcc.dg/builtin-redefine.c: New.
      
      From-SVN: r140461
      c047ce93
  36. Apr 18, 2008
    • Kris Van Hees's avatar
      cpp-id-data.h (UC): Was U, conflicts with U... · b6baa67d
      Kris Van Hees authored
      libcpp/ChangeLog:
      2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
      
      * include/cpp-id-data.h (UC): Was U, conflicts with U... literal.
      * include/cpplib.h (CHAR16, CHAR32, STRING16, STRING32): New tokens.
      (struct cpp_options): Added uliterals.
      (cpp_interpret_string): Update prototype.
      (cpp_interpret_string_notranslate): Idem.
      * charset.c (init_iconv_desc): New width member in cset_converter.
      (cpp_init_iconv): Add support for char{16,32}_cset_desc.
      (convert_ucn): Idem.
      (emit_numeric_escape): Idem.
      (convert_hex): Idem.
      (convert_oct): Idem.
      (convert_escape): Idem.
      (converter_for_type): New function.
      (cpp_interpret_string): Use converter_for_type, support u and U prefix.
      (cpp_interpret_string_notranslate): Match changed prototype.
      (wide_str_to_charconst): Use converter_for_type.
      (cpp_interpret_charconst): Add support for CPP_CHAR{16,32}.
      * directives.c (linemarker_dir): Macro U changed to UC.
      (parse_include): Idem.
      (register_pragma_1): Idem.
      (restore_registered_pragmas): Idem.
      (get__Pragma_string): Support CPP_STRING{16,32}.
      * expr.c (eval_token): Support CPP_CHAR{16,32}.
      * init.c (struct lang_flags): Added uliterals.
      (lang_defaults): Idem.
      * internal.h (struct cset_converter) <width>: New field.
      (struct cpp_reader) <char16_cset_desc>: Idem.
      (struct cpp_reader) <char32_cset_desc>: Idem.
      * lex.c (digraph_spellings): Macro U changed to UC.
      (OP, TK): Idem.
      (lex_string): Add support for u'...', U'...', u... and U....
      (_cpp_lex_direct): Idem.
      * macro.c (_cpp_builtin_macro_text): Macro U changed to UC.
      (stringify_arg): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
      
      gcc/ChangeLog:
      2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
        
      * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
      (fname_as_string): Match updated cpp_interpret_string prototype.
      (fix_string_type): Support char16_t* and char32_t*.
      (c_common_nodes_and_builtins): Add char16_t and char32_t (and
      derivative) nodes.  Register as builtin if C++0x.
      (c_parse_error): Support CPP_CHAR{16,32}.
      * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
      (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
      CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
      CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
      CTI_CHAR32_ARRAY_TYPE>: New elements.
      (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
      char32_type_node, signed_char32_type_node, char16_array_type_node,
      char32_array_type_node): New defines.
      * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
      (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
      (lex_string): Support CPP_STRING{16,32}, match updated
      cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
      (lex_charconst): Support CPP_CHAR{16,32}.
      * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
      and CPP_STRING{16,32}.
      
      gcc/cp/ChangeLog:
      2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
      
      * cvt.c (type_promotes_to): Support char16_t and char32_t.
      * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
      char16_t and char32_t.
      * lex.c (reswords): Add char16_t and char32_t (for c++0x).
      * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
      extended builtin type u8char32_t.
      * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
      RID_CHAR{16,32}.
      (cp_lexer_print_token): Support CPP_STRING{16,32}.
      (cp_parser_is_string_literal): Idem.
      (cp_parser_string_literal): Idem.
      (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
      CPP_STRING{16,32}.
      (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. 
      * tree.c (char_type_p): Support char16_t and char32_t as char types.
      * typeck.c (string_conv_p): Support char16_t and char32_t.
      
      gcc/testsuite/ChangeLog:
      2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
      
      Tests for char16_t and char32_t support.
      * g++.dg/ext/utf-cvt.C: New
      * g++.dg/ext/utf-cxx0x.C: New
      * g++.dg/ext/utf-cxx98.C: New
      * g++.dg/ext/utf-dflt.C: New
      * g++.dg/ext/utf-gnuxx0x.C: New
      * g++.dg/ext/utf-gnuxx98.C: New
      * g++.dg/ext/utf-mangle.C: New
      * g++.dg/ext/utf-typedef-cxx0x.C: New
      * g++.dg/ext/utf-typedef-
      * g++.dg/ext/utf-typespec.C: New
      * g++.dg/ext/utf16-1.C: New
      * g++.dg/ext/utf16-2.C: New
      * g++.dg/ext/utf16-3.C: New
      * g++.dg/ext/utf16-4.C: New
      * g++.dg/ext/utf32-1.C: New
      * g++.dg/ext/utf32-2.C: New
      * g++.dg/ext/utf32-3.C: New
      * g++.dg/ext/utf32-4.C: New
      * gcc.dg/utf-cvt.c: New
      * gcc.dg/utf-dflt.c: New
      * gcc.dg/utf16-1.c: New
      * gcc.dg/utf16-2.c: New
      * gcc.dg/utf16-3.c: New
      * gcc.dg/utf16-4.c: New
      * gcc.dg/utf32-1.c: New
      * gcc.dg/utf32-2.c: New
      * gcc.dg/utf32-3.c: New
      * gcc.dg/utf32-4.c: New
      
      libiberty/ChangeLog:
      2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
      
      * testsuite/demangle-expected: Added tests for char16_t and char32_t.
      
      From-SVN: r134438
      b6baa67d
  37. Sep 06, 2007
    • Tom Tromey's avatar
      tree-cfg.c (remove_bb): Only warn if line is non-zero. · 5ffeb913
      Tom Tromey authored
      gcc:
      	* tree-cfg.c (remove_bb): Only warn if line is non-zero.
      	* c-pch.c (c_common_read_pch): Restore current location after
      	reading PCH file.
      	* tree.c (expand_location): Update.
      	(expr_filename): Changed return type.  Unified the two cases.
      	(expr_lineno): Likewise.
      	(annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
      	as lvalues.
      	* toplev.c (line_table): Changed type.
      	(general_init): Update.
      	(realloc_for_line_map): New function.
      	(general_init): Allocate line_table using GC.
      	* fix-header.c (line_table): Changed type.
      	(read_scan_file): Update.
      	(read_scan_file): Update.
      	* c-ppoutput.c (maybe_print_line): Update.
      	(print_line): Update.
      	(cb_line_change): Update.
      	(cb_define): Update.
      	(pp_file_change): Update.
      	* c-opts.c (c_common_init_options): Update.
      	(finish_options): Update.
      	(push_command_line_include): Update.
      	* c-lex.c (cb_line_change): Update.
      	(cb_def_pragma): Update.
      	(cb_define): Update.
      	(cb_undef): Update.
      	(c_lex_with_flags): Use cpp_get_token_with_location.
      	* input.h (line_table): Changed type.
      	(location_from_locus): New macro.
      	* tree.h (EXPR_FILENAME): No longer an lvalue.
      	(EXPR_LINENO): Likewise.
      	(expr_locus, set_expr_locus): Declare separately for
      	USE_MAPPED_LOCATION.
      	(expr_filename, expr_lineno): Changed return type.
      	* gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
      	* cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
      	(expand_gimple_basic_block): Likewise.
      	* final.c (final_scan_insn): Use expanded_location.
      gcc/cp:
      	* decl.c (finish_function): Put return's location on line zero of
      	file.
      gcc/fortran:
      	* scanner.c (get_file): Update.
      	(load_file): Update.
      	(gfc_next_char_literal): Use gfc_linebuf_linenum.
      	* f95-lang.c (gfc_init): Update.
      	* gfortran.h (gfc_linebuf_linenum): New macro.
      gcc/java:
      	* lang.c (java_post_options): Update.
      	* jcf-parse.c (set_source_filename): Update.
      	(give_name_to_class): Update.
      	(jcf_parse): Update.
      	(duplicate_class_warning): Update.
      	(parse_class_file): Update.
      	(java_parse_file): Update.
      	* expr.c (expand_byte_code): Update.
      gcc/testsuite:
      	* lib/g++.exp (g++_target_compile): Use -fno-show-column.
      gcc/treelang:
      	* tree1.c (treelang_init): Update.
      	(treelang_parse_file): Update.
      	(treelang_parse_file): Update.
      	(treelang_parse_file): Update.
      	* lex.l: Update.
      	(update_lineno_charno): Likewise.
      libcpp:
      	* internal.h (struct cpp_reader) <invocation_location>: New
      	field.
      	(struct cpp_reader) <set_invocation_location>: Likewise.
      	* init.c (cpp_set_line_map): New function.
      	* line-map.c (linemap_add): Use linemap's allocator.
      	* include/line-map.h (GTY): Define.
      	(line_map_realloc): New typedef.
      	(struct line_map): Mark with GTY.
      	(struct line_maps): Likewise.
      	(struct line_maps) <maps>: Likewise.
      	(struct line_maps) <reallocator>: New field.
      	* include/symtab.h (GTY): Conditionally define.
      	* include/cpplib.h (cpp_set_line_map): Declare.
      	(cpp_get_token_with_location): Declare.
      	* macro.c (cpp_get_token): Set invocation_location on the reader.
      	(cpp_get_token_with_location): New function.
      
      From-SVN: r128190
      5ffeb913
Loading