1. 01 Jul, 2015 20 commits
  2. 30 Jun, 2015 20 commits
    • lto-streamer-out.c (class DFS): Adjust hash_scc method. · cec34ee5
      	* lto-streamer-out.c (class DFS): Adjust hash_scc method.
      	(DFS::DFS): Pass this_ref_p and ref_p to hash_scc.
      	(hash_scc): Add this_ref_p and ref_p parameters and pass them
      	to the inner DFS walk.
      
      From-SVN: r225212
      Eric Botcazou committed
    • target-insns.def (jump): New targetm instruction pattern. · ec4a505f
      gcc/
      	* target-insns.def (jump): New targetm instruction pattern.
      	* bb-reorder.c (get_uncond_jump_length): Use targetm.gen_jump
      	instead of gen_jump.
      	(fix_up_crossing_landing_pad): Likewise.
      	(add_labels_and_missing_jumps): Likewise.
      	(fix_crossing_conditional_branches): Likewise.
      	* cfgrtl.c (try_redirect_by_replacing_jump): Likewise.
      	(force_nonfallthru_and_redirect): Likewise.
      	* cse.c (cse_insn): Likewise.
      	* expmed.c (expand_divmod): Likewise.
      	* expr.c (store_expr_with_bounds, expand_expr_real_2): Likewise.
      	* haifa-sched.c (init_before_recovery): Likewise.
      	(sched_create_recovery_edges): Likewise.
      	* ifcvt.c (find_cond_trap): Likewise.
      	* optabs.c (expand_doubleword_shift, expand_doubleword_clz): Likewise.
      	(expand_float, expand_fix): Likewise.
      	* stmt.c (emit_jump): Likewise.
      
      From-SVN: r225211
      Richard Sandiford committed
    • gcc/ · 20fceb31
      	* defaults.h (HAVE_load_multiple, gen_load_multiple)
      	(HAVE_store_multiple, gen_store_multiple): Delete.
      	* target-insns.def (load_multiple, store_multiple): New targetm
      	instruction patterns.
      	* expr.c (move_block_to_reg, move_block_from_reg): Use them instead
      	of HAVE_*/gen_* interface.
      
      From-SVN: r225210
      Richard Sandiford committed
    • gcc/ · ccf5bbdd
      	* defaults.h (HAVE_mem_thread_fence, gen_mem_thread_fence)
      	(HAVE_memory_barrier, gen_memory_barrier, HAVE_mem_signal_fence)
      	(gen_mem_signal_fence): Delete.
      	* target-insns.def (mem_signal_fence, mem_thread_fence)
      	(memory_barrier): New targetm instruction patterns.
      	* optabs.c (expand_mem_thread_fence): Use them instead of HAVE_*/gen_*
      	interface.
      	(expand_mem_signal_fence): Likewise.
      
      From-SVN: r225209
      Richard Sandiford committed
    • defaults.h (HAVE_epilogue, [...]): Delete. · e86a9946
      gcc/
      	* defaults.h (HAVE_epilogue, gen_epilogue): Delete.
      	* target-insns.def (epilogue, prologue, sibcall_prologue): New
      	targetm instruction patterns.
      	* alias.c (init_alias_analysis): Use them instead of HAVE_*/gen_*
      	interface.
      	* calls.c (expand_call): Likewise.
      	* cfgrtl.c (cfg_layout_finalize): Likewise.
      	* df-scan.c (df_get_entry_block_def_set): Likewise.
      	(df_get_exit_block_use_set): Likewise.
      	* dwarf2cfi.c (pass_dwarf2_frame::gate): Likewise.
      	* final.c (final_start_function): Likewise.
      	* function.c (thread_prologue_and_epilogue_insns): Likewise.
      	(reposition_prologue_and_epilogue_notes): Likewise.
      	* reorg.c (find_end_label): Likewise.
      	* toplev.c (process_options): Likewise.
      
      From-SVN: r225208
      Richard Sandiford committed
    • jit: add switch statements · ec5d0088
      gcc/ChangeLog:
      	* typed-splay-tree.h: New file.
      
      gcc/jit/ChangeLog:
      	* docs/cp/topics/functions.rst (Blocks): Add switch statements to
      	list of ways to terminate a block.
      	(gccjit::block::end_with_switch): Add function description.
      	(gccjit::case_): Add class.
      	(gccjit::context::new_case): Add function description.
      	* docs/cp/topics/objects.rst: Add "case_" to class hierarchy.
      	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_3): New.
      	* docs/topics/functions.rst (Blocks): Add switch statements to
      	list of ways to terminate a block.
      	(gcc_jit_block_end_with_switch): Add function description.
      	(gcc_jit_case): Add type.
      	(gcc_jit_context_new_case): Add function description.
      	(gcc_jit_case_as_object): Add function description.
      	* docs/topics/objects.rst: Add gcc_jit_case to class hierarchy.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      	* jit-common.h (gcc::jit::recording::case_): Add forward decl.
      	(gcc::jit::playback::case_): Add forward decl.
      	* jit-playback.c (add_case): New function.
      	(gcc::jit::playback::block::add_switch): New function.
      	* jit-playback.h (gcc::jit::playback::case_): New struct.
      	(gcc::jit::playback::block::get_function): New method.
      	(gcc::jit::playback::block::add_switch): New method.
      	* jit-recording.c: Within namespace gcc::jit...
      	(recording::context::new_case): New method.
      	(recording::function::validate): Update for change to
      	get_successor_blocks.
      	(recording::block::end_with_switch): New method.
      	(recording::block::get_successor_blocks): Update to support an
      	arbitrary number of successor blocks.
      	(recording::block::dump_edges_to_dot): Likewise.
      	(memento_of_new_rvalue_from_const <int>::get_wide_int): New.
      	(memento_of_new_rvalue_from_const <long>::get_wide_int): New.
      	(memento_of_new_rvalue_from_const <double>::get_wide_int): New.
      	(memento_of_new_rvalue_from_const <void *>::get_wide_int): New.
      	(recording::statement::get_successor_blocks): Update to support an
      	arbitrary number of successor blocks.
      	(recording::conditional::get_successor_blocks): Likewise.
      	(recording::jump::get_successor_blocks): Likewise.
      	(recording::return_::get_successor_blocks): Likewise.
      	(recording::case_::write_reproducer): New.
      	(recording::case_::make_debug_string): New.
      	(recording::switch_::switch_): New.
      	(recording::switch_::replay_into): New.
      	(recording::switch_::get_successor_blocks): New.
      	(recording::switch_::make_debug_string): New.
      	(recording::switch_::write_reproducer): New.
      	* jit-recording.h: Within namespace gcc::jit::recording...
      	(context::new_case): New.
      	(rvalue::is_constant): New.
      	(rvalue::get_wide_int): New.
      	(block::end_with_switch): New.
      	(block::get_successor_blocks): Update to support an arbitrary
      	number of successor blocks.
      	(memento_of_new_rvalue_from_const::is_constant): New.
      	(memento_of_new_rvalue_from_const::get_wide_int): New.
      	(statement::get_successor_blocks): Update to support an arbitrary
      	number of successor blocks.
      	(conditional::get_successor_blocks): Likewise.
      	(jump::get_successor_blocks): Likewise.
      	(return_::get_successor_blocks): Likewise.
      	(case_): New subclass of memento.
      	(switch_): New subclass of statement.
      	* libgccjit++.h (gccjit::case_): New subclass of gccjit::object.
      	(gccjit::context::new_case): New method.
      	(gccjit::block::end_with_switch): New method.
      	(gccjit::case_::case): New ctors.
      	(gccjit::case_::get_inner_case): New method.
      	* libgccjit.c: Include "typed-splay-tree.h"
      	(struct gcc_jit_case): New.
      	(gcc_jit_context_new_case): New function.
      	(gcc_jit_case_as_object): New function.
      	(valid_dest_for_switch): New function.
      	(valid_case_for_switch): New function.
      	(class api_call_validator): New class.
      	(class case_range_validator): New class.
      	(case_range_validator::case_range_validator): New.
      	(case_range_validator::validate): New.
      	(case_range_validator::case_compare): New.
      	(case_range_validator::get_wide_int): new.
      	(gcc_jit_block_end_with_switch): New.
      	* libgccjit.h: Add gcc_jit_case to class hierarchy comment.
      	(gcc_jit_case): New typedef.
      	(gcc_jit_context_new_case): New function.
      	(gcc_jit_case_as_object): New function.
      	(gcc_jit_block_end_with_switch): New function.
      	(LIBGCCJIT_HAVE_SWITCH_STATEMENTS): New.
      	* libgccjit.map: Add gcc_jit_block_end_with_switch,
      	gcc_jit_case_as_object and gcc_jit_context_new_case.
      
      gcc/testsuite/ChangeLog:
      	* jit.dg/all-non-failing-tests.h: Add test-switch.c.
      	* jit.dg/test-error-gcc_jit_block_end_with_switch-NULL-case.c: New
      	testcase.
      	* jit.dg/test-error-gcc_jit_block_end_with_switch-mismatching-case-type.c:
      	New testcase.
      	* jit.dg/test-error-gcc_jit_block_end_with_switch-overlapping-ranges.c:
      	New testcase.
      	* jit.dg/test-error-gcc_jit_context_new_case-non-const-label.c:
      	New testcase.
      	* jit.dg/test-error-gcc_jit_context_new_case-non-integer-type.c:
      	New testcase.
      	* jit.dg/test-error-gcc_jit_context_new_case-reversed-endpoints.c:
      	New testcase.
      	* jit.dg/test-switch.c: New testcase.
      	* jit.dg/test-switch.cc: New testcase.
      
      From-SVN: r225207
      David Malcolm committed
    • PR jit/66546: Add gcc_jit_context_set_bool_allow_unreachable_blocks · 6a3603e3
      gcc/jit/ChangeLog:
      	PR jit/66546
      	* docs/cp/topics/contexts.rst
      	(gccjit::context::set_bool_allow_unreachable_blocks): New.
      	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_2): New.
      	* docs/topics/contexts.rst (Options): Add notes discussing the
      	transition from enums to entrypoints for new options.
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): New.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      	* jit-common.h (gcc::jit::inner_bool_option): New enum.
      	* jit-recording.c: Within namespace gcc::jit...
      	(recording::context::context): Handle m_inner_bool_options.
      	(recording::context::set_inner_bool_option): New.
      	(inner_bool_option_reproducer_strings): New.
      	(recording::context::log_all_options): Log the "inner" bool
      	options.
      	(recording::context::log_inner_bool_option): New.
      	(recording::context::dump_reproducer_to_file): Write initializers
      	for "inner" bool options.
      	(recording::function::validate): Don't check for block
      	reachability if INNER_BOOL_OPTION_ALLOW_UNREACHABLE_BLOCKS is set.
      	* jit-recording.h: Within namespace gcc::jit...
      	(recording::context::set_inner_bool_option): New.
      	(recording::context::get_inner_bool_option): New.
      	(recording::context::log_inner_bool_option): New.
      	(recording::context::m_inner_bool_options): New.
      	* libgccjit++.h
      	(gccjit::context::set_bool_allow_unreachable_blocks): New.
      	* libgccjit.c
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): New.
      	* libgccjit.h: Add note about options present in the
      	initial release of libgccjit.
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): New API
      	entrypoint.
      	(LIBGCCJIT_HAVE_gcc_jit_context_set_bool_allow_unreachable_blocks):
      	New macro.
      	* libgccjit.map (LIBGCCJIT_ABI_2): New, containing...
      	(gcc_jit_context_set_bool_allow_unreachable_blocks): ...this new
      	entrypoint.
      
      gcc/testsuite/ChangeLog:
      	PR jit/66546
      	* jit.dg/all-non-failing-tests.h: Add note about
      	test-validly-unreachable-block.c.
      	* jit.dg/test-validly-unreachable-block.c: New file.
      
      From-SVN: r225206
      David Malcolm committed
    • PR jit/66628: add gcc_jit_context_add_command_line_option · fa22c20d
      gcc/jit/ChangeLog:
      	PR jit/66628
      	* docs/cp/topics/contexts.rst (Additional command-line options):
      	New section.
      	* docs/topics/compatibility.rst: New file.
      	* docs/topics/contexts.rst (Additional command-line options): New
      	section.
      	* docs/topics/index.rst: Add compatibility.rst.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      	* jit-playback.c (make_fake_args): Add call to
      	append_command_line_options.
      	* jit-recording.c: Within namespace gcc::jit...
      	(recording::context::~context): Free the optnames within
      	m_command_line_options.
      	(recording::context::set_bool_option): Likewise.
      	(recording::context::add_command_line_option): New method.
      	(recording::context::append_command_line_options): New method.
      	(recording::context::dump_reproducer_to_file): Add command-line
      	options.
      	* jit-recording.h: Within namespace gcc::jit...
      	(recording::context::add_command_line_option): New method.
      	(recording::context::append_command_line_options): New method.
      	(recording::context::m_command_line_options): New field.
      	* libgccjit++.h (gccjit::context::add_command_line_option): New
      	method.
      	* libgccjit.c (gcc_jit_context_add_command_line_option): New API
      	entrypoint.
      	* libgccjit.h (gcc_jit_context_add_command_line_option): New API
      	entrypoint.
      	(LIBGCCJIT_HAVE_gcc_jit_context_add_command_line_option): New
      	macro.
      	* libgccjit.map: Put existing symbols within LIBGCCJIT_ABI_0; add
      	LIBGCCJIT_ABI_1 and gcc_jit_context_add_command_line_option.
      
      gcc/testsuite/ChangeLog:
      	PR jit/66628
      	* jit.dg/all-non-failing-tests.h: Add note about
      	test-extra-options.c.
      	* jit.dg/test-extra-options.c: New testcase.
      
      From-SVN: r225205
      David Malcolm committed
    • fixes to gcc_jit_context_dump_reproducer_to_file · a6314e15
      gcc/jit/ChangeLog:
      	* jit-recording.c
      	(gcc::jit::recording::context::dump_reproducer_to_file):
      	Add pragma to generated reproducers to disable -Wunused-variable.
      	Fix handling of NULL string options.
      
      From-SVN: r225204
      David Malcolm committed
    • jit: fix some .rst issues in docs · adb6d84b
      gcc/jit/ChangeLog:
      	* docs/cp/topics/expressions.rst: Remove stray semicolon.
      	* docs/cp/topics/functions.rst: Remove stray backslash.
      	* docs/_build/texinfo/libgccjit.texi: Regenerate.
      
      From-SVN: r225203
      David Malcolm committed
    • Add missed test · 633cdd72
      From-SVN: r225201
      Vladimir Makarov committed
    • re PR debug/66691 (ICE on valid code at -O3 with -g enabled in simplify_subreg,… · ef87312e
      re PR debug/66691 (ICE on valid code at -O3 with -g enabled in simplify_subreg, at simplify-rtx.c:5744)
      
      2015-06-30  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR debug/66691
      	* lra-int.h (lra_substitute_pseudo): Add a parameter.
      	(lra_substitute_pseudo_within_insn): Ditto.
      	* lra.c (lra_substitute_pseudo): Add a parameter.  Simplify subreg
      	of constant.
      	(lra_substitute_pseudo_within_insn): Add a parameter.  Transfer it
      	to lra_substitute_pseudo.
      	* lra-lives.c (process_bb_lives): Add an argument to
      	lra_substitute_pseudo_within_insn call.
      	* lra-constraints.c (inherit_reload_reg, split_reg): Add an
      	argument to lra_substitute_pseudo and
      	lra_substitute_pseudo_within_insn calls.
      	(remove_inheritance_pseudos, undo_optional_reloads): Ditto.
      
      2015-06-30  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR debug/66691
      	* gcc.target/i386/pr66691.c: New.
      
      From-SVN: r225200
      Vladimir Makarov committed
    • IA MCU psABI support: testsuite · 8b970b6e
      We run Intel MCU psABI tests on Linux/ia32 with -miamcu.  Since Intel
      MCU psABI has a different calling convention, the only Linux libc function
      allowed is "abort".
      
      asm-support.S contains some support functions as well as a subset of
      soft-fp, which is written in assembly with x87 instructions, to provide
      intrinsics needed by -miamcu so that Intel MCU psABI tests can run on
      Linux.
      
      	* gcc.target/i386/iamcu/abi-iamcu.exp: New file.
      	* gcc.target/i386/iamcu/args.h: Likewise.
      	* gcc.target/i386/iamcu/asm-support.S: Likewise.
      	* gcc.target/i386/iamcu/defines.h: Likewise.
      	* gcc.target/i386/iamcu/macros.h: Likewise.
      	* gcc.target/i386/iamcu/test_3_element_struct_and_unions.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_64bit_returning.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_alignment.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_array_size_and_align.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_returning.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_sizes.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_struct_size_and_align.c: Likewise.
      	* gcc.target/i386/iamcu/test_basic_union_size_and_align.c: Likewise.
      	* gcc.target/i386/iamcu/test_bitfields.c: Likewise.
      	* gcc.target/i386/iamcu/test_complex_returning.c: Likewise.
      	* gcc.target/i386/iamcu/test_passing_floats.c: Likewise.
      	* gcc.target/i386/iamcu/test_passing_integers.c: Likewise.
      	* gcc.target/i386/iamcu/test_passing_structs.c: Likewise.
      	* gcc.target/i386/iamcu/test_passing_structs_and_unions.c: Likewise.
      	* gcc.target/i386/iamcu/test_passing_unions.c: Likewise.
      	* gcc.target/i386/iamcu/test_struct_returning.c: Likewise.
      	* gcc.target/i386/iamcu/test_varargs.c: Likewise.
      
      From-SVN: r225199
      H.J. Lu committed
    • IA MCU psABI support: changes to libraries · cb78b51c
      Patch in the bottom adds support of IA MCU psABI to libgcc (enables
      soft-fp) and libdecnumber (enables it for IA MCU).
      
      config/
      
      	* dfp.m4 (enable_decimal_float): Also set to yes for
      	i?86*-*-elfiamcu target.
      
      gcc/
      
      	* configure: Regenerated.
      
      libdecnumber/
      
      	* configure: Regenerated.
      
      libgcc/
      
      	* config.host: Support i[34567]86-*-elfiamcu target.
      	* config/t-softfp-sfdftf: New file.
      	* config/i386/32/t-iamcu: Likewise.
      	* configure: Regenerated.
      
      From-SVN: r225198
      H.J. Lu committed
    • IA MCU psABI support: GCC changes · d9063947
      This patch introduces basic IA MCU psABI support into GCC.
      
      	* configure.ac (ospace_frag): Enable for i?86*-*-elfiamcu
      	target.
      	* configure: Regenerate.
      
      gcc/
      
      	* config.gcc: Support i[34567]86-*-elfiamcu target.
      	* config/i386/iamcu.h: New.
      	* config/i386/i386.opt: Add -miamcu.
      	* doc/invoke.texi: Document -miamcu.
      	* common/config/i386/i386-common.c  (ix86_handle_option): Turn
      	off x87/MMX/SSE/AVX codegen for -miamcu.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Define
      	__iamcu/__iamcu__ for -miamcu.
      	* config/i386/i386.h (PREFERRED_STACK_BOUNDARY_DEFAULT): Set
      	to MIN_STACK_BOUNDARY if TARGET_IAMCU is true.
      	(BIGGEST_ALIGNMENT): Set to 32 if TARGET_IAMCU is true.
      	* config/i386/i386.c (ix86_option_override_internal): Ignore and
      	warn -mregparm for Intel MCU.  Turn on -mregparm=3 for Intel
      	MCU by default.  Default long double to 64-bit for Intel MCU.
      	Turn on -freg-struct-return for Intel MCU.  Issue an error when
      	-miamcu is used in 64-bit or x32 mode or if x87, MMX, SSE or
      	AVX is turned on.
      	(function_arg_advance_32): Pass value whose size is no larger
      	than 8 bytes in registers for Intel MCU.
      	(function_arg_32): Likewise.
      	(ix86_return_in_memory): Return value whose size is no larger
      	than 8 bytes in registers for Intel MCU.
      	(iamcu_alignment): New function.
      	(ix86_data_alignment): Call iamcu_alignment if TARGET_IAMCU is
      	true.
      	(ix86_local_alignment): Don't increase alignment for Intel MCU.
      	(x86_field_alignment): Return iamcu_alignment if TARGET_IAMCU is
      	true.
      
      From-SVN: r225197
      H.J. Lu committed
    • match.pd (~x | x): Don't use tree_nop_conversion_p. · 3db55b2b
      	* match.pd (~x | x): Don't use tree_nop_conversion_p.  Build
      	the final expression with the operand's type and then convert
      	it to the type of the expression.
      
      	* gcc.dg/fold-ior-3.c: New test.
      
      From-SVN: r225196
      Marek Polacek committed
    • match.pd (X - (X / Y) * Y): Use convert1 and convert2. · d3bc1d1b
      	* match.pd (X - (X / Y) * Y): Use convert1 and convert2.  Convert
      	both operands of the resulting expression.	
      
      	* gcc.dg/fold-minus-6.c: New test.
      
      From-SVN: r225195
      Marek Polacek committed
    • Run testsuite/libgomp.oacc-c++/c++.exp at -O2 by default · b451c271
      2015-06-30  Tom de Vries  <tom@codesourcery.com>
      
      	* testsuite/libgomp.oacc-c++/c++.exp: Set DEFAULT_CFLAGS to -O2 if not
      	already set.  Use DEFAULT_CFLAGS in dg-runtest.
      	* testsuite/libgomp.oacc-c-c++-common/collapse-3.c: Remove dg-options
      	"-O2".
      
      From-SVN: r225194
      Tom de Vries committed
    • re PR debug/66653 (ice in gen_type_die_with_usage, at dwarf2out.c:20876) · 47297e51
      	PR debug/66653
      	* decl2.c (is_late_template_attribute): True for tls_model.
      
      From-SVN: r225193
      Jason Merrill committed
    • re PR debug/66653 (ice in gen_type_die_with_usage, at dwarf2out.c:20876) · 3048c0c7
      	PR debug/66653
      	* cp-tree.h (CP_DECL_THREAD_LOCAL_P): New.
      	(DECL_GNU_TLS_P): Use DECL_LANG_SPECIFIC field.
      	(SET_DECL_GNU_TLS_P): New.
      	* call.c (make_temporary_var_for_ref_to_temp): Use
      	CP_DECL_THREAD_LOCAL_P.
      	(set_up_extended_ref_temp): Likewise.
      	* decl.c (duplicate_decls, expand_static_init): Likewise.
      	(redeclaration_error_message, grokvardecl): Likewise.
      	(start_decl, register_dtor_fn, grokdeclarator): Likewise.
      	* decl2.c (get_guard, var_needs_tls_wrapper): Likewise.
      	(handle_tls_init): Likewise.
      	* pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
      	* semantics.c (finish_id_expression): Likewise.
      	(handle_omp_array_sections_1, finish_omp_clauses): Likewise.
      	(finish_omp_threadprivate): Likewise.
      	* tree.c (decl_storage_duration): Likewise.
      	* cp-gimplify.c (omp_var_to_track): Likewise.
      	(cp_genericize_r): Check that it matches DECL_THREAD_LOCAL_P.
      	* lex.c (retrofit_lang_decl): Return if DECL_LANG_SPECIFIC is
      	already set.
      
      From-SVN: r225192
      Jason Merrill committed