1. 04 Feb, 2015 23 commits
  2. 03 Feb, 2015 16 commits
    • intrinsic.texi (CO_ASSOCIATED): c_prt_1 should be c_ptr_1. · db78ae15
      2015-02-03  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* intrinsic.texi (CO_ASSOCIATED): c_prt_1 should be c_ptr_1.
      
      From-SVN: r220381
      Steven G. Kargl committed
    • go/types: Remove unused testdata files. · bfdd75a8
      The go/types package was removed in July 2013, but the
      testdata files were accidentally left behind.
      
      From-SVN: r220378
      Ian Lance Taylor committed
    • re PR rtl-optimization/64756 (wrong code at -O3 on x86_64-linux-gnu (in 32-bit mode)) · 2a1d78d8
      	PR rtl-optimization/64756
      	* cse.c (invalidate_dest): New function.
      	(cse_insn): Use it.  If dest != SET_DEST (sets[i].rtl) and
      	HASH (SET_DEST (sets[i].rtl), mode) computation sets do_not_record,
      	invalidate and do not record it.
      
      	* gcc.c-torture/execute/pr64756.c: New test.
      
      From-SVN: r220377
      Jakub Jelinek committed
    • re PR target/64660 ([SH] Convert atomic_fetch_<op> to atomic_<op>_fetch) · 3548abca
      gcc/
      	PR target/64660
      	* config/sh/sync.md (atomic_<fetchop_name><mode>_hard,
      	atomic_not<mode>_hard, atomic_<fetchop_name><mode>_soft_tcb,
      	atomic_not<mode>_soft_tcb, atomic_nand<mode>_hard,
      	atomic_nand<mode>_soft_tcb): New insns.
      	(atomic_fetch_<fetchop_name>si_hard): Convert to insn_and_split.
      	Split into atomic_<fetchop_name>_fetchsi_hard if operands[0] is unused.
      	(define_insn "atomic_fetch_notsi_hard): Convert to insn_and_split.
      	Split into atomic_not_fetchsi_hard if operands[0] is unused.
      	(atomic_fetch_<fetchop_name><mode>_hard): Convert to insn_and_split.
      	Split into atomic_<fetchop_name><mode>_hard if operands[0] is unused.
      	(atomic_fetch_not<mode>_hard): Convert to insn_and_split.  Split into
      	atomic_not<mode>_hard if operands[0] is unused.
      	(atomic_fetch_<fetchop_name><mode>_soft_gusa): Convert to
      	insn_and_split.  Split into atomic_<fetchop_name>_fetch<mode>_soft_gusa
      	if operands[0] is unused.
      	(atomic_fetch_not<mode>_soft_gusa): Convert to insn_and_split.  Split
      	into atomic_not_fetch<mode>_soft_gusa if operands[0] is unused.
      	(atomic_fetch_<fetchop_name><mode>_soft_tcb): Convert to insn_and_split.
      	Split into atomic_<fetchop_name><mode>_soft_tcb if operands[0] is
      	unused.
      	(atomic_fetch_not<mode>_soft_tcb): Convert to insn_and_split.  Split
      	into atomic_not<mode>_soft_tcb if operands[0] is unused.
      	(atomic_fetch_<fetchop_name><mode>_soft_imask): Convert to
      	insn_and_split.  Split into atomic_<fetchop_name>_fetch<mode>_soft_imask
      	if operands[0] is unused.
      	(atomic_fetch_not<mode>_soft_imask): Convert to insn_and_split.  Split
      	into atomic_not_fetch<mode>_soft_imask is operands[0] is unused.
      	(atomic_fetch_nandsi_hard): Convert to insn_and_split.  Split into
      	atomic_nand_fetchsi_hard if operands[0] is unused.
      	(atomic_fetch_nand<mode>_hard): Convert to insn_and_split.  Split into
      	atomic_nand<mode>_hard if operands[0] is unused.
      	(atomic_fetch_nand<mode>_soft_gusa): Convert to insn_and_split.  Split
      	into atomic_nand_fetch<mode>_soft_gusa if operands[0] is unused.
      	(atomic_fetch_nand<mode>_soft_tcb): Convert to insn_and_split.  Split
      	into atomic_nand<mode>_soft_tcb if operands[0] is unused.
      	(atomic_fetch_nand<mode>_soft_imask): Convert to insn_and_split.  Split
      	into atomic_nand_fetch<mode>_soft_imask if operands[0] is unused.
      	(atomic_<fetchop_name>_fetch<mode>_hard): Convert to insn_and_split.
      	Split into atomic_<fetchop_name><mode>_hard if operands[0] is unused.
      	(atomic_not_fetch<mode>_hard): Convert to insn_and_split.  Split into
      	atomic_not<mode>_hard if operands[0] is unused.
      	(atomic_<fetchop_name>_fetch<mode>_soft_tcb): Convert to insn_and_split.
      	Split into atomic_<fetchop_name><mode>_soft_tcb if operands[0] is
      	unused.
      	(atomic_not_fetch<mode>_soft_tcb): Convert to insn_and_split.  Split
      	into atomic_not<mode>_soft_tcb if operands[0] is unused.
      	(atomic_nand_fetch<mode>_hard): Convert to insn_and_split.  Split into
      	atomic_nand<mode>_hard if operands[0] is unused.
      	(atomic_nand_fetch<mode>_soft_tcb): Convert to insn_and_split.  Split
      	into atomic_nand<mode>_soft_tcb if operands[0] is unused.
      
      gcc/testsuite/
      	PR target/64660
      	* gcc.target/sh/pr64660-0.h: New.
      	* gcc.target/sh/pr64660-1.c: New.
      	* gcc.target/sh/pr64660-2.c: New.
      	* gcc.target/sh/pr64660-3.c: New.
      	* gcc.target/sh/pr64660-4.c: New.
      
      From-SVN: r220376
      Oleg Endo committed
    • jit: option-logging · 0ed4f017
      gcc/jit/ChangeLog:
      	* jit-logging.h (gcc::jit::log_user::log): Make const.
      	* jit-recording.c (gcc::jit::recording::context::set_str_option):
      	Log the new value of the option.
      	(gcc::jit::recording::context::set_int_option): Likewise.
      	(gcc::jit::recording::context::set_bool_option): Likewise.
      	(gcc::jit::recording::context::compile): Log the value of all
      	options.
      	(gcc::jit::recording::context::compile_to_file): Likewise.
      	(gcc::jit::recording::context::log_all_options): New function.
      	(gcc::jit::recording::context::log_str_option): New function.
      	(gcc::jit::recording::context::log_int_option): New function.
      	(gcc::jit::recording::context::log_bool_option): New function.
      	* jit-recording.h (gcc::jit::recording::context::log_all_options):
      	New function.
      	(gcc::jit::recording::context::log_str_option): New function.
      	(gcc::jit::recording::context::log_int_option): New function.
      	(gcc::jit::recording::context::log_bool_option): New function.
      	* docs/internals/test-hello-world.exe.log.txt: Update for above
      	changes.
      
      From-SVN: r220375
      David Malcolm committed
    • re PR c++/64877 (strange warning message from -Waddress) · 457d0ace
      /cp
      2015-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/64877
      	* typeck.c (cp_build_binary_op): Avoid spurious -Waddress warnings
      	for generated expressions.
      
      /testsuite
      2015-02-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/64877
      	* g++.dg/warn/Waddress-2.C: New.
      
      From-SVN: r220374
      Paolo Carlini committed
    • PR jit/64810: driver, arm, jit: configure-time default options · 2cb844ce
      gcc/ChangeLog:
      	PR jit/64810
      	* Makefile.in (GCC_OBJS): Add gcc-main.o.
      	* gcc-main.c: New file, containing "main" taken from gcc.c.
      	* gcc.c (do_self_spec): Free decoded_options.
      	(class driver): Move declaration to gcc.h.
      	(main): Move declaration and implementation to new file
      	gcc-main.c.
      	(driver_get_configure_time_options): New function.
      	* gcc.h (class driver): Move this declaration here, from
      	gcc.c.
      	(driver_get_configure_time_options): New declaration.
      
      gcc/jit/ChangeLog:
      	PR jit/64810
      	* Make-lang.in (jit_OBJS): Add jit/jit-spec.o and gcc.o.
      	(LIBGCCJIT_FILENAME): Add EXTRA_GCC_OBJS.
      	* jit-playback.c: Include gcc.h.
      	(gcc::jit::playback::context::compile): Move mutex acquisition
      	to before the call to make_fake_args.
      	(append_arg_from_driver): New function.
      	(gcc::jit::playback::context::make_fake_args): On the first call,
      	call into driver_get_configure_time_options to get configure-time
      	default options and cache them.  Add them to the args for
      	toplev::main.
      	* jit-spec.c: New source file.
      	* docs/internals/test-hello-world.exe.log.txt: Update to reflect
      	above changes.
      
      From-SVN: r220373
      David Malcolm committed
    • ipa-inline-analysis.c (simple_edge_hints): Fix check for cross-module inlining. · ebc8f0bb
      	* ipa-inline-analysis.c (simple_edge_hints): Fix check for
      	cross-module inlining.
      	* cgraph.h (cgraph_node): Add flag merged.
      	* ipa-icf.c (sem_function::merge): Maintain it.
      
      	* lto-symtab.c (lto_cgraph_replace_node): Maintain merged flag.
      
      From-SVN: r220372
      Jan Hubicka committed
    • arm.c (thumb2_reorg): Test UNARY_P and BINARY_P instead of OBJECT_P. · 901e59b2
      gcc/
      	* config/arm/arm.c (thumb2_reorg): Test UNARY_P and BINARY_P
      	instead of OBJECT_P.
      
      From-SVN: r220371
      Richard Sandiford committed
    • re PR middle-end/61225 (Several new failures after r210458 on x86_64-*-* with -m32) · 2944c91c
      	PR middle-end/61225
      	gcc.target/i386/pr49095.c: XFAIL for ia32.
      
      From-SVN: r220370
      Segher Boessenkool committed
    • re PR target/62631 (gcc.dg/tree-ssa/ivopts-lt-2.c FAILs) · aa47faf0
      	PR target/62631
      	* config/sparc/sparc.h (TARGET_HARD_MUL): Remove TARGET_V8PLUS.
      	(TARGET_HARD_MUL32): Rewrite based on TARGET_HARD_MUL.
      	* config/sparc/sparc.c (sparc_rtx_costs) <MULT>: Return costs based on
      	int_mulX for integers in 64-bit mode if TARGET_HARD_MUL is not set.
      
      From-SVN: r220369
      Eric Botcazou committed
    • re PR other/63504 (Issues found by --enable-checking=valgrind) · 76f0aa6c
      	PR other/63504
      	* combine.c (reg_n_sets_max): New variable.
      	(can_change_dest_mode, reg_nonzero_bits_for_combine,
      	reg_num_sign_bit_copies_for_combine, get_last_value_validate,
      	get_last_value): Use REG_N_SETS only on pseudos < reg_n_sets_max.
      	(try_combine): Use INC_REG_N_SETS only on pseudos < reg_n_sets_max.
      	(rest_of_handle_combine): Initialize reg_n_sets_max.
      
      From-SVN: r220368
      Jakub Jelinek committed
    • PR preprocessor/64803 - __LINE__ inside macro is not constant · f8abc9ba
      Consider the example code mentionned in this PR:
      
       $ cat -n test.c
            1	#define C(a, b) a ## b
            2	#define L(x) C(L, x)
            3	#define M(a) goto L(__LINE__); __LINE__; L(__LINE__):
            4	M(a /* --> this is the line of the expansion point of M.  */
            5	  ); /* --> this is the line of the end of the invocation of M.  */
       $
      
      "cc1 -quiet -E test.c" yields:
      
       goto L5; 5; L4:
          ;
      
      Notice how we have a 'L4' there, where it should be L5.  That is the issue.
      
      My understanding is that during the *second* expansion of __LINE__
      (the one between the two L(__LINE__)), builtin_macro() is called by
      enter_macro_context() with the location of the expansion point of M
      (which is at line 4).  Then _cpp_builtin_macro_text() expands __LINE__
      into the line number of the location of the last token that has been
      lexed, which is the location of the closing parenthesis of the
      invocation of M, at line 5.  So that invocation of __LINE__ is
      expanded into 5.
      
      Now let's see why the last invocation of __LINE__ is expanded into 4.
      
      In builtin_macro(), we have this code at some point:
      
         /* Set pfile->cur_token as required by _cpp_lex_direct.  */
         pfile->cur_token = _cpp_temp_token (pfile);
         cpp_token *token = _cpp_lex_direct (pfile);
         /* We should point to the expansion point of the builtin macro.  */
         token->src_loc = loc;
      
      The first two statements insert a new token in the stream of lexed
      token and pfile->cur_token[-1], is the "new" last token that has been
      lexed.  But the location of pfile->cur_token[-1] is the same location
      as the location of the "previous" pfile->cur_token[-1], by courtesy of
      _cpp_temp_token().  So normally, in subsequent invocations of
      builtin_macro(), the location of pfile->cur_token[-1] should always be
      the location of the closing parenthesis of the invocation of M at line
      5.  Except that that code in master now has the statement
      "token->src_loc = loc;" on the next line.  That statement actually
      sets the location of pfile->cur_token[-1] to 'loc'.  Which is the
      location of the expansion point of M, which is on line 4.
      
      So in the subsequent call to builtin_macro() (for the last expansion
      of __LINE__ in L(__LINE__)), for _cpp_builtin_macro_text(),
      pfile->cur_token[-1].src_loc is going to have a line number of 4.
      
      I think the core issue here is that the location that is passed to
      builtin_macro() from enter_macro_context() is not correct when we are
      in presence of a top-most function-like macro invocation; in that
      case, that location should be the location of the closing parenthesis
      of the macro invocation.  Otherwise, if we are in presence of a a
      top-most object-like macro invocation then the location passed down
      to builtin_macro should be the location of the expansion point of the
      macro.
      
      That way, in the particular case of the input code above, the location
      received by builtin_macro() will always have line number 5.
      
      Boostrapped and tested on x86_64-unknown-linux-gnu against trunk.
      
      libcpp/ChangeLog:
      
      	* internal.h (cpp_reader::top_most_macro_node): New data member.
      	* macro.c (enter_macro_context): Pass the location of the end of
      	the top-most invocation of the function-like macro, or the
      	location of the expansion point of the top-most object-like macro.
      	(cpp_get_token_1): Store the top-most macro node in the new
      	pfile->top_most_macro_node data member.
      	(_cpp_pop_context): Clear the new cpp_reader::top_most_macro_node
      	data member.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/cpp/builtin-macro-1.c: New test case.
      
      Signed-off-by: Dodji Seketeli <dodji@redhat.com>
      
      From-SVN: r220367
      Dodji Seketeli committed
    • re PR go/64836 (go.test/test/fixedbugs/issue4348.go FAILs) · 18fbd1ec
      	PR go/64836
      	PR go/64838
      
      compiler: Use int64_t for backend type size and alignment.
      
      Fixes 32-bit host 64-bit target cross-compilation.
      
      	* go-gcc.cc (Gcc_backend::type_size): Change return type to
      	int64_t.
      	(Gcc_backend::type_alignment): Likewise.
      	(Gcc_backend::type_field_alignment): Likewise.
      	(Gcc_backend::type_field_offset): Likewise.
      	(Gcc_backend::implicit_variable): Change alignment parameter type
      	to int64_t.
      
      From-SVN: r220364
      Ian Lance Taylor committed
    • re PR c++/64901 (overriding final function defined out of line does not lead to an error) · 879887f1
      	PR c++/64901
      	* decl.c (duplicate_decls): Also duplicate DECL_FINAL_P and
      	DECL_OVERRIDE_P.
      
      From-SVN: r220363
      Ville Voutilainen committed
    • Daily bump. · cf55ec56
      From-SVN: r220362
      GCC Administrator committed
  3. 02 Feb, 2015 1 commit