1. 23 Nov, 2016 40 commits
    • [Patch 15/17 libgcc ARM] Add double to half conversions. · bea64ca3
      libgcc/
      
      	* config/arm/fp16.c (binary64): New.
      	(__gnu_d2h_internal): New.
      	(__gnu_d2h_ieee): New.
      	(__gnu_d2h_alternative): New.
      
      
      
      Co-Authored-By: Matthew Wahab <matthew.wahab@arm.com>
      
      From-SVN: r242782
      James Greenhalgh committed
    • [Patch 14/17] [libgcc, ARM] Generalise float-to-half conversion function. · 8630cadb
      libgcc/
      
      	* config/arm/fp16.c (struct format): New.
      	(binary32): New.
      	(__gnu_float2h_internal): New.  Body moved from
      	__gnu_f2h_internal and generalize.
      	(_gnu_f2h_internal): Move body to function __gnu_float2h_internal.
      	Call it with binary32.
      
      
      
      Co-Authored-By: Matthew Wahab <matthew.wahab@arm.com>
      
      From-SVN: r242781
      James Greenhalgh committed
    • [Patch testsuite patch 10/17] Add options for floatN when checking effective target for support · ba75a174
      gcc/testsuite/
      
      	* lib/target-supports.exp (check_effective_target_float16): Add
      	options for _Float16.
      	(check_effective_target_float32): Add options for _Float32.
      	(check_effective_target_float64): Add options for _Float64.
      	(check_effective_target_float128): Add options for _Float128.
      	(check_effective_target_float32x): Add options for _Float32x.
      	(check_effective_target_float64x): Add options for _Float64x.
      	(check_effective_target_float128x): Add options for _Float128x.
      
      From-SVN: r242780
      James Greenhalgh committed
    • [Patch libgcc 9/17] Update soft-fp from glibc · 5823ef23
      libgcc/
      
      	* soft-fp/extendhftf2.c: New.
      	* soft-fp/fixhfti.c: Likewise.
      	* soft-fp/fixunshfti.c: Likewise.
      	* soft-fp/floattihf.c: Likewise.
      	* soft-fp/floatuntihf.c: Likewise.
      	* soft-fp/half.h: Likewise.
      	* soft-fp/trunctfhf2.c: Likewise.
      
      From-SVN: r242779
      James Greenhalgh committed
    • [Patch 8/17] Make _Float16 available if HFmode is available · 3479b7af
      gcc/
      
      	* targhooks.c (default_floatn_mode): Enable _Float16 if a target
      	provides HFmode.
      
      From-SVN: r242778
      James Greenhalgh committed
    • [Patch 7/17] Delete TARGET_FLT_EVAL_METHOD and poison it. · 8f23c89a
      gcc/
      
      	* config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Delete.
      	* config/m68k/m68k.h (TARGET_FLT_EVAL_METHOD): Delete.
      	* config/i386/i386.h (TARGET_FLT_EVAL_METHOD): Delete.
      	* defaults.h (TARGET_FLT_EVAL_METHOD): Delete.
      	* doc/tm.texi.in (TARGET_FLT_EVAL_METHOD): Delete.
      	* doc/tm.texi: Regenerate.
      	* system.h (TARGET_FLT_EVAL_METHOD): Poison.
      
      From-SVN: r242777
      James Greenhalgh committed
    • [Patch 6/17] Migrate excess precision logic to use TARGET_EXCESS_PRECISION · 56d8ffc1
      gcc/
      
      	* toplev.c (init_excess_precision): Delete most logic.
      	* tree.c (excess_precision_type): Rewrite to use
      	TARGET_EXCESS_PRECISION.
      	* doc/invoke.texi (-fexcess-precision): Document behaviour in a
      	more generic fashion.
      	* ginclude/float.h: Wrap definition of FLT_EVAL_METHOD in
      	__STDC_WANT_IEC_60559_TYPES_EXT__.
      
      gcc/c-family/
      
      	* c-common.c (excess_precision_mode_join): New.
      	(c_ts18661_flt_eval_method): New.
      	(c_c11_flt_eval_method): Likewise.
      	(c_flt_eval_method): Likewise.
      	* c-common.h (excess_precision_mode_join): New.
      	(c_flt_eval_method): Likewise.
      	* c-cppbuiltin.c (c_cpp_flt_eval_method_iec_559): New.
      	(cpp_iec_559_value): Call it.
      	(c_cpp_builtins): Modify logic for __LIBGCC_*_EXCESS_PRECISION__,
      	call c_flt_eval_method to set __FLT_EVAL_METHOD__ and
      	__FLT_EVAL_METHOD_TS_18661_3__.
      
      gcc/testsuite/
      
      	* gcc.dg/fpermitted-flt-eval-methods_3.c: New.
      	* gcc.dg/fpermitted-flt-eval-methods_4.c: Likewise.
      
      From-SVN: r242776
      James Greenhalgh committed
    • [Patch 5/17] Add -fpermitted-flt-eval-methods=[c11|ts-18661-3] · 04f0fcf7
      gcc/c-family/
      
      	* c-opts.c (c_common_post_options): Add logic to handle the default
      	case for -fpermitted-flt-eval-methods.
      
      gcc/
      
      	* common.opt (fpermitted-flt-eval-methods): New.
      	* doc/invoke.texi (-fpermitted-flt-eval-methods): Document it.
      	* flag_types.h (permitted_flt_eval_methods): New.
      
      gcc/testsuite/
      
      	* gcc.dg/fpermitted-flt-eval-methods_1.c: New.
      	* gcc.dg/fpermitted-flt-eval-methods_2.c: New.
      
      From-SVN: r242775
      James Greenhalgh committed
    • [Patch 4/17] Implement TARGET_C_EXCESS_PRECISION for m68k · b89de1b8
      gcc/
      
      	* config/m68k/m68k.c (m68k_excess_precision): New.
      	(TARGET_C_EXCESS_PRECISION): Define.
      
      From-SVN: r242774
      James Greenhalgh committed
    • [Patch 3/17] Implement TARGET_C_EXCESS_PRECISION for s390 · 638108bd
      	* config/s390/s390.c (s390_excess_precision): New.
      	(TARGET_C_EXCESS_PRECISION): Define.
      
      From-SVN: r242773
      James Greenhalgh committed
    • [Patch 2/17] Implement TARGET_C_EXCESS_PRECISION for i386 · e97dfd54
      gcc/
      	* config/i386/i386.c (ix86_excess_precision): New.
      	(TARGET_C_EXCESS_PRECISION): Define.
      
      From-SVN: r242772
      James Greenhalgh committed
    • [Patch 1/17] Add a new target hook for describing excess precision intentions · 42e02b20
      gcc/
      
      	* target.def (excess_precision): New hook.
      	* target.h (flt_eval_method): New.
      	(excess_precision_type): Likewise.
      	* targhooks.c (default_excess_precision): New.
      	* targhooks.h (default_excess_precision): New.
      	* doc/tm.texi.in (TARGET_C_EXCESS_PRECISION): New.
      	* doc/tm.texi: Regenerate.
      
      From-SVN: r242771
      James Greenhalgh committed
    • PR middle-end/78461 - [7 Regression] ICE: in operator+= · aecc521b
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/78461
      	* gcc.dg/tree-ssa/builtin-sprintf-4.c: New test.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Adjust warning text.
      
      gcc/ChangeLog:
      
      	PR middle-end/78461
      	* gimple-ssa-sprintf.c (format_string): Correct the maxima and
      	set the minimum number of bytes for an unknown string to zero.
      
      From-SVN: r242769
      Martin Sebor committed
    • re PR c++/71450 (ICE on invalid C++11 code on x86_64-linux-gnu: in tree check:… · 1b3314dd
      re PR c++/71450 (ICE on invalid C++11 code on x86_64-linux-gnu: in tree check: expected record_type or union_type or qual_union_type, have template_type_parm in lookup_base, at cp/search.c:203)
      
      	PR c++/71450
      	* pt.c (tsubst_copy): Return error_mark_node when mark_used
      	fails, even when complain & tf_error.
      
      	* g++.dg/cpp0x/pr71450-1.C: New test.
      	* g++.dg/cpp0x/pr71450-2.C: New test.
      
      From-SVN: r242767
      Jakub Jelinek committed
    • re PR c++/77739 (internal compiler error: in create_tmp_var, at gimple-expr.c:524) · e2df2328
      	PR c++/77739
      	* cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
      	false as handle_invisiref_parm_p to cp_genericize_tree.
      	(struct cp_genericize_data): Add handle_invisiref_parm_p field.
      	(cp_genericize_r): Don't wrap is_invisiref_parm into references
      	if !wtd->handle_invisiref_parm_p.
      	(cp_genericize_tree): Add handle_invisiref_parm_p argument,
      	set wtd.handle_invisiref_parm_p to it.
      	(cp_genericize): Pass true as handle_invisiref_parm_p to
      	cp_genericize_tree.  Formatting fix.
      
      	* g++.dg/cpp1y/pr77739.C: New test.
      
      From-SVN: r242766
      Jakub Jelinek committed
    • Fix PR number in ChangeLog · 75631692
      From-SVN: r242765
      Jonathan Wakely committed
    • backport: hsa-builtins.def: New file. · 56b1c60e
      Merge from HSA branch to trunk
      
      2016-11-23  Martin Jambor  <mjambor@suse.cz>
      	    Martin Liska  <mliska@suse.cz>
      
      gcc/
      	* hsa-builtins.def: New file.
      	* Makefile.in (BUILTINS_DEF): Add hsa-builtins.def dependency.
      	* builtins.def: Include hsa-builtins.def.
      	(DEF_HSA_BUILTIN): New macro.
      	* dumpfile.h (OPTGROUP_OPENMP): Define.
      	* dumpfile.c (optgroup_options): Added OPTGROUP_OPENMP.
      	* gimple.h (gf_mask): Added elements GF_OMP_FOR_GRID_INTRA_GROUP and
      	GF_OMP_FOR_GRID_GROUP_ITER.
      	(gimple_omp_for_grid_phony): Added checking assert.
      	(gimple_omp_for_set_grid_phony): Likewise.
      	(gimple_omp_for_grid_intra_group): New function.
      	(gimple_omp_for_set_grid_intra_group): Likewise.
      	(gimple_omp_for_grid_group_iter): Likewise.
      	(gimple_omp_for_set_grid_group_iter): Likewise.
      	* omp-low.c (check_omp_nesting_restrictions): Allow GRID loop where
      	previosuly only distribute loop was permitted.
      	(lower_lastprivate_clauses): Allow non tcc_comparison predicates.
      	(grid_get_kernel_launch_attributes): Support multiple HSA grid
      	dimensions.
      	(grid_expand_omp_for_loop): Likewise and also support standalone
      	distribute constructs.  New parameter INTRA_GROUP, updated both users.
      	(grid_expand_target_grid_body): Support standalone distribute
      	constructs.
      	(pass_data_expand_omp): Changed optinfo_flags to OPTGROUP_OPENMP.
      	(pass_data_expand_omp_ssa): Likewise.
      	(pass_data_omp_device_lower): Likewsie.
      	(pass_data_lower_omp): Likewise.
      	(pass_data_diagnose_omp_blocks): Likewise.
      	(pass_data_oacc_device_lower): Likewise.
      	(pass_data_omp_target_link): Likewise.
      	(grid_lastprivate_predicate): New function.
      	(lower_omp_for_lastprivate): Call grid_lastprivate_predicate for
      	gridified loops.
      	(lower_omp_for): Support standalone distribute constructs.
      	(grid_prop): New type.
      	(grid_safe_assignment_p): Check for assignments to group_sizes, new
      	parameter GRID.
      	(grid_seq_only_contains_local_assignments): New parameter GRID, pass
      	it to callee.
      	(grid_find_single_omp_among_assignments_1): Likewise, improve missed
      	optimization info messages.
      	(grid_find_single_omp_among_assignments): Likewise.
      	(grid_find_ungridifiable_statement): Do not bail out for SIMDs.
      	(grid_parallel_clauses_gridifiable): New function.
      	(grid_inner_loop_gridifiable_p): Likewise.
      	(grid_dist_follows_simple_pattern): Likewise.
      	(grid_gfor_follows_tiling_pattern): Likewise.
      	(grid_call_permissible_in_distribute_p): Likewise.
      	(grid_handle_call_in_distribute): Likewise.
      	(grid_dist_follows_tiling_pattern): Likewise.
      	(grid_target_follows_gridifiable_pattern): Support standalone distribute
      	constructs.
      	(grid_var_segment): New enum.
      	(grid_mark_variable_segment): New function.
      	(grid_copy_leading_local_assignments): Call grid_mark_variable_segment
      	if a new argument says so.
      	(grid_process_grid_body): New function.
      	(grid_eliminate_combined_simd_part): Likewise.
      	(grid_mark_tiling_loops): Likewise.
      	(grid_mark_tiling_parallels_and_loops): Likewise.
      	(grid_process_kernel_body_copy): Support standalone distribute
      	constructs.
      	(grid_attempt_target_gridification): New grid variable holding overall
      	gridification state.  Support standalone distribute constructs and
      	collapse clauses.
      	* doc/optinfo.texi (Optimization groups): Document OPTGROUP_OPENMP.
      	* hsa.h (hsa_bb): Add method method append_phi.
      	(hsa_insn_br): Renamed to hsa_insn_cbr, renamed all
      	occurences in all files too.
      	(hsa_insn_br): New class, now the ancestor of hsa_incn_cbr.
      	(is_a_helper <hsa_insn_br *>::test): New function.
      	(is_a_helper <hsa_insn_cbr *>::test): Adjust to only cover conditional
      	branch instructions.
      	(hsa_insn_signal): Make a direct descendant of
      	hsa_insn_basic.  Add memorder constructor parameter and
      	m_memory_order and m_signalop member variables.
      	(hsa_insn_queue): Changed constructor parameters to common form.
      	Added m_segment and m_memory_order member variables.
      	(hsa_summary_t): Add private member function
      	process_gpu_implementation_attributes.
      	(hsa_function_summary): Rename m_binded_function to
      	m_bound_function.
      	(hsa_insn_basic_p): Remove typedef.
      	(hsa_op_with_type): Change hsa_insn_basic_p into plain pointers.
      	(hsa_op_reg_p): Remove typedef.
      	(hsa_function_representation): Change hsa_op_reg_p into plain
      	pointers.
      	(hsa_insn_phi): Removed new and delete operators.
      	(hsa_insn_br): Likewise.
      	(hsa_insn_cbr): Likewise.
      	(hsa_insn_sbr): Likewise.
      	(hsa_insn_cmp): Likewise.
      	(hsa_insn_mem): Likewise.
      	(hsa_insn_atomic): Likewise.
      	(hsa_insn_signal): Likewise.
      	(hsa_insn_seg): Likewise.
      	(hsa_insn_call): Likewise.
      	(hsa_insn_arg_block): Likewise.
      	(hsa_insn_comment): Likewise.
      	(hsa_insn_srctype): Likewise.
      	(hsa_insn_packed): Likewise.
      	(hsa_insn_cvt): Likewise.
      	(hsa_insn_alloca): Likewise.
      	* hsa.c (hsa_destroy_insn): Also handle instances of hsa_insn_br.
      	(process_gpu_implementation_attributes): New function.
      	(link_functions): Move some functionality into it.  Adjust after
      	renaming m_binded_functions to m_bound_functions.
      	(hsa_insn_basic::op_output_p): Add BRIG_OPCODE_DEBUGTRAP
      	to the list of instructions with no output registers.
      	(get_in_type): Return this if it is a register of
      	matching size.
      	(hsa_get_declaration_name): Moved to...
              * hsa-gen.c (hsa_get_declaration_name): ...here.  Allocate
      	temporary string on an obstack instead from ggc.
      	(query_hsa_grid): Renamed to query_hsa_grid_dim, reimplemented, cut
      	down to two overloads.
      	(hsa_allocp_operand_address): Removed.
      	(hsa_allocp_operand_immed): Likewise.
      	(hsa_allocp_operand_reg): Likewise.
      	(hsa_allocp_operand_code_list): Likewise.
      	(hsa_allocp_operand_operand_list): Likewise.
      	(hsa_allocp_inst_basic): Likewise.
      	(hsa_allocp_inst_phi): Likewise.
      	(hsa_allocp_inst_mem): Likewise.
      	(hsa_allocp_inst_atomic): Likewise.
      	(hsa_allocp_inst_signal): Likewise.
      	(hsa_allocp_inst_seg): Likewise.
      	(hsa_allocp_inst_cmp): Likewise.
      	(hsa_allocp_inst_br): Likewise.
      	(hsa_allocp_inst_sbr): Likewise.
      	(hsa_allocp_inst_call): Likewise.
      	(hsa_allocp_inst_arg_block): Likewise.
      	(hsa_allocp_inst_comment): Likewise.
      	(hsa_allocp_inst_queue): Likewise.
      	(hsa_allocp_inst_srctype): Likewise.
      	(hsa_allocp_inst_packed): Likewise.
      	(hsa_allocp_inst_cvt): Likewise.
      	(hsa_allocp_inst_alloca): Likewise.
      	(hsa_allocp_bb): Likewise.
      	(hsa_obstack): New.
      	(hsa_init_data_for_cfun): Initialize obstack.
      	(hsa_deinit_data_for_cfun): Release memory of the obstack.
      	(hsa_op_immed::operator new): Use obstack instead of object_allocator.
      	(hsa_op_reg::operator new): Likewise.
      	(hsa_op_address::operator new): Likewise.
      	(hsa_op_code_list::operator new): Likewise.
      	(hsa_op_operand_list::operator new): Likewise.
      	(hsa_insn_basic::operator new): Likewise.
      	(hsa_insn_phi::operator new): Likewise.
      	(hsa_insn_br::operator new): Likewise.
      	(hsa_insn_sbr::operator new): Likewise.
      	(hsa_insn_cmp::operator new): Likewise.
      	(hsa_insn_mem::operator new): Likewise.
      	(hsa_insn_atomic::operator new): Likewise.
      	(hsa_insn_signal::operator new): Likewise.
      	(hsa_insn_seg::operator new): Likewise.
      	(hsa_insn_call::operator new): Likewise.
      	(hsa_insn_arg_block::operator new): Likewise.
      	(hsa_insn_comment::operator new): Likewise.
      	(hsa_insn_srctype::operator new): Likewise.
      	(hsa_insn_packed::operator new): Likewise.
      	(hsa_insn_cvt::operator new): Likewise.
      	(hsa_insn_alloca::operator new): Likewise.
      	(hsa_init_new_bb): Likewise.
      	(hsa_bb::append_phi): New function.
      	(gen_hsa_phi_from_gimple_phi): Use it.
      	(get_symbol_for_decl): Fix dinstinguishing between
      	global and local functions.  Put local variables into a segment
      	according to their attribute or static flag, if there is one.
      	(hsa_insn_br::hsa_insn_br): New.
      	(hsa_insn_br::operator new): Likewise.
      	(hsa_insn_cbr::hsa_insn_cbr): Set width via ancestor constructor.
      	(query_hsa_grid_nodim): New function.
      	(multiply_grid_dim_characteristics): Likewise.
      	(gen_get_num_threads): Likewise.
      	(gen_get_num_teams): Reimplemented.
      	(gen_get_team_num): Likewise.
      	(gen_hsa_insns_for_known_library_call): Updated calls to the above
      	helper functions.
      	(get_memory_order_name): Removed.
      	(get_memory_order): Likewise.
      	(hsa_memorder_from_tree): New function.
      	(gen_hsa_ternary_atomic_for_builtin): Renamed to
      	gen_hsa_atomic_for_builtin, can also create signals.
      	(gen_hsa_insns_for_call): Handle many new builtins.  Adjust to use
      	hsa_memory_order_from_tree and gen_hsa_atomic_for_builtin.
      	(hsa_insn_atomic): Fix function comment.
      	(hsa_insn_signal::hsa_insn_signal): Fix comment.  Update call to
      	ancestor constructor and initialization of new member variables.
      	(hsa_insn_queue::hsa_insn_queue): Added initialization of new
      	member variables.
      	(hsa_get_host_function): Handle functions with no bound CPU
      	implementation.  Fix binded to bound.
      	(get_brig_function_name): Likewise.
      	(HSA_SORRY_ATV): Remove semicolon after macro.
      	(HSA_SORRY_AT): Likewise.
      	(omp_simple_builtin::generate): Add missing semicolons.
      	(hsa_insn_phi::operator new): Removed.
      	(hsa_insn_br::operator new): Likewise.
      	(hsa_insn_cbr::operator new): Likewise.
      	(hsa_insn_sbr::operator new): Likewise.
      	(hsa_insn_cmp::operator new): Likewise.
      	(hsa_insn_mem::operator new): Likewise.
      	(hsa_insn_atomic::operator new): Likewise.
      	(hsa_insn_signal::operator new): Likewise.
      	(hsa_insn_seg::operator new): Likewise.
      	(hsa_insn_call::operator new): Likewise.
      	(hsa_insn_arg_block::operator new): Likewise.
      	(hsa_insn_comment::operator new): Likewise.
      	(hsa_insn_srctype::operator new): Likewise.
      	(hsa_insn_packed::operator new): Likewise.
      	(hsa_insn_cvt::operator new): Likewise.
      	(hsa_insn_alloca::operator new): Likewise.
      	(get_symbol_for_decl): Accept CONST_DECLs, put them to
      	readonly segment.
      	(gen_hsa_addr): Also process CONST_DECLs.
      	(gen_hsa_addr_insns): Process CONST_DECLs by creating private
      	copies.
      	(gen_hsa_unary_operation): Make sure the function does
      	not use bittype source type for firstbit and lastbit operations.
      	(gen_hsa_popcount_to_dest): Make sure the function uses a bittype
      	source type.
      	* hsa-brig.c (emit_insn_operands): Cope with zero operands in an
      	instruction.
      	(emit_branch_insn): Renamed to emit_cond_branch_insn.
      	Emit the width stored in the class.
      	(emit_generic_branch_insn): New function.
      	(emit_insn): Call emit_generic_branch_insn.
      	(emit_signal_insn): Remove obsolete comment.  Update
      	member variable name, pick a type according to profile.
      	(emit_alloca_insn): Remove obsolete comment.
      	(emit_atomic_insn): Likewise.
      	(emit_queue_insn): Get segment and memory order from the IR object.
      	(hsa_brig_section): Make allocate_new_chunk, chunks
      	and cur_chunk provate, add a default NULL parameter to add method.
      	(hsa_brig_section::add): Added a new parameter, store pointer to
      	output data there if it is non-NULL.
      	(emit_function_directives): Use this new parameter instead of
      	calculating the pointer itself, fix function comment.
      	(hsa_brig_emit_function): Add forgotten endian conversion.
      	(hsa_output_kernels): Remove unnecessary building of
      	kernel_dependencies_vector_type.
      	(emit_immediate_operand): Declare.
      	(emit_directive_variable): Also emit initializers of CONST_DECLs.
      	(gen_hsa_insn_for_internal_fn_call): Also handle IFN_RSQRT.
      	(verify_function_arguments): Properly detect variadic
      	arguments.
      	* hsa-dump.c (hsa_width_specifier_name): New function.
      	(dump_hsa_insn_1): Dump generic branch instructions, update signal
      	member variable name.  Special dumping for queue objects.
      	* ipa-hsa.c (process_hsa_functions): Adjust after renaming
      	m_binded_functions to m_bound_functions.  Copy externally visible flag
      	to the node.
      	(ipa_hsa_write_summary): Likewise.
      	(ipa_hsa_read_section): Likewise.
      
      
      	gcc/fortran/
              * f95-lang.c (DEF_HSA_BUILTIN): New macro.
      
      gcc/testsuite/
      	* c-c++-common/gomp/gridify-1.c: Update scan string.
      	* gfortran.dg/gomp/gridify-1.f90: Likewise.
      	* c-c++-common/gomp/gridify-2.c: New test.
      	* c-c++-common/gomp/gridify-3.c: Likewise.
      
      libgomp/
      	* testsuite/libgomp.hsa.c/bits-insns.c: New test.
      	* testsuite/libgomp.hsa.c/tiling-1.c: Likewise.
      	* testsuite/libgomp.hsa.c/tiling-2.c: Likewise.
      
      
      Co-Authored-By: Martin Liska <mliska@suse.cz>
      
      From-SVN: r242761
      Martin Jambor committed
    • PR78494 add missing returns to propagate_const · f6cdfe82
      2016-11-23  Felix Morgner  <felix.morgner@gmail.com>
      	    Jonathan Wakely  <jwakely@redhat.com>
      
      	PR libstdc++/78494
      	* include/experimental/propagate_const (propagate_const::operator=):
      	Add missing return statements.
      	* testsuite/experimental/propagate_const/assignment/move_neg.cc:
      	Adjust dg-error line numbers.
      	* testsuite/experimental/propagate_const/requirements2.cc: Likewise.
      
      Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
      
      From-SVN: r242760
      Felix Morgner committed
    • re PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848) · e600f219
      2016-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78396
      	* tree-vectorizer.c (vectorize_loops): If an innermost loop didn't
      	vectorize try vectorizing an if-converted body using BB vectorization.
      
      	* gcc.dg/vect/bb-slp-cond-1.c: Adjust.
      
      From-SVN: r242759
      Richard Biener committed
    • Rework subreg_get_info · 07ce1466
      This isn't intended to change the behaviour, just rewrite the
      existing logic in a different (and hopefully clearer) way.
      The new form -- particularly the part based on the "block"
      concept -- is easier to convert to polynomial sizes.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* rtlanal.c (subreg_get_info): Use more local variables.
      	Remark that for HARD_REGNO_NREGS_HAS_PADDING, each scalar unit
      	occupies at least one register.  Assume that full hard registers
      	have consistent endianness.  Share previously-duplicated if block.
      	Rework the main handling so that it operates on independently-
      	addressable YMODE-sized blocks.  Use subreg_size_lowpart_offset
      	to check lowpart offsets, without trying to find an equivalent
      	integer mode first.  Handle WORDS_BIG_ENDIAN != REG_WORDS_BIG_ENDIAN
      	as a final register-endianness correction.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242758
      Richard Sandiford committed
    • combine: Convert subreg-of-lshiftrt to zero_extract properly (PR78390) · 712871dd
      r242414, for PR77881, introduces some bugs (PR78390, PR78438, PR78477).
      It all has the same root cause: that patch makes combine convert every
      lowpart subreg of a logical shift right to a zero_extract.  This cannot
      work at all if it is not a constant shift, and it has to be a bit more
      careful exactly which bits it extracts.
      
      
      	PR target/77881
      	PR bootstrap/78390
      	PR target/78438
      	PR bootstrap/78477
      	* combine.c (make_compound_operation_int): Do not convert a subreg of
      	a non-constant logical shift right to a zero_extract.  Handle the case
      	where some zero bits have been shifted into the range covered by that
      	subreg.
      
      From-SVN: r242757
      Segher Boessenkool committed
    • Add more subreg offset helpers · 33951763
      Provide versions of subreg_lowpart_offset and subreg_highpart_offset
      that work on mode sizes rather than modes.  Also provide a routine
      that converts an lsb position to a subreg offset.
      
      The intent (in combination with later patches) is to move the
      handling of the BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN case into
      just two places, so that for other combinations we don't have
      to split offsets into words and subwords.
      
      gcc/
      2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      	* rtl.h (subreg_size_offset_from_lsb): Declare.
      	(subreg_offset_from_lsb): New function.
      	(subreg_size_lowpart_offset): Declare.
      	(subreg_lowpart_offset): Turn into an inline function.
      	(subreg_size_highpart_offset): Declare.
      	(subreg_highpart_offset): Turn into an inline function.
      	* emit-rtl.c (subreg_size_lowpart_offset): New function.
      	(subreg_size_highpart_offset): Likewise
      	* rtlanal.c (subreg_size_offset_from_lsb): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r242755
      Richard Sandiford committed
    • re PR tree-optimization/78482 (wrong code at -O3 in both 32-bit and 64-bit modes… · cbb88345
      re PR tree-optimization/78482 (wrong code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu)
      
      2016-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78482
      	* tree-cfgcleanup.c: Include tree-ssa-loop-niter.h.
      	(remove_forwarder_block_with_phi): When merging with a loop
      	header creates a new latch reset number of iteration information
      	of the loop.
      
      	* gcc.dg/torture/pr78482.c: New testcase.
      
      From-SVN: r242754
      Richard Biener committed
    • sparc.md (*ashrsi3_extend): Rename to... · abe40574
      	* config/sparc/sparc.md (*ashrsi3_extend): Rename to...
      	(*ashrsi3_extend0): ...this.  Accept constant integers.
      	(*ashrsi3_extend2): Rename to...
      	(*ashrsi3_extend1): ...this.
      	(*ashrsi3_extend2): New pattern.
      	(*lshrsi3_extend1): Accept constant integers.
      	(*lshrsi3_extend2): Fix condition on operand 2.
      
      From-SVN: r242753
      Eric Botcazou committed
    • i386.c: Initialize function pointer to NULL to prevent · 4987b1e0
      	* config/i386/i386.c: Initialize function pointer to NULL.
      
      From-SVN: r242752
      Martin Liska committed
    • fold-const.c (fold_cond_expr_with_comparison): Move simplification for A == C1 ? A : C2 to below. · e2535011
      	* fold-const.c (fold_cond_expr_with_comparison): Move simplification
      	for A == C1 ? A : C2 to below.
      	* match.pd: Move from above to here:
      	(cond (eq (convert1? x) c1) (convert2? x) c2)
      	  -> (cond (eq x c1) c1 c2).
      
      From-SVN: r242751
      Bin Cheng committed
    • fold-const.c (fold_cond_expr_with_comparison): Move simplification for A cmp C1… · b5481987
      fold-const.c (fold_cond_expr_with_comparison): Move simplification for A cmp C1 ? A : C2 to below, also simplify remaining code.
      
      	* fold-const.c (fold_cond_expr_with_comparison): Move simplification
      	for A cmp C1 ? A : C2 to below, also simplify remaining code.
      	* match.pd: Move and extend simplification from above to here:
      	(cond (cmp (convert1? x) c1) (convert2? x) c2) -> (minmax (x c)).
      	* tree-if-conv.c (ifcvt_follow_ssa_use_edges): New func.
      	(predicate_scalar_phi): Call fold_stmt using the new valueize func.
      
      	gcc/testsuite
      	* gcc.dg/fold-cond_expr-1.c: New test.
      	* gcc.dg/fold-condcmpconv-1.c: New test.
      	* gcc.dg/fold-condcmpconv-2.c: New test.
      
      From-SVN: r242750
      Bin Cheng committed
    • Remove build dependence on HSA run-time · b8d89b03
      2016-11-23  Martin Liska  <mliska@suse.cz>
                  Martin Jambor  <mjambor@suse.cz>
      
      gcc/
      	* doc/install.texi: Remove entry about --with-hsa-kmt-lib.
      
      libgomp/
      	* plugin/hsa.h: New file.
      	* plugin/hsa_ext_finalize.h: New file.
      	* plugin/configfrag.ac: Remove hsa-kmt-lib test.  Added checks for
      	header file unistd.h, and functions secure_getenv, __secure_getenv,
      	getuid, geteuid, getgid and getegid.
      	* plugin/Makefrag.am (libgomp_plugin_hsa_la_CPPFLAGS): Added
      	-D_GNU_SOURCE.
      	* plugin/plugin-hsa.c: Include config.h, inttypes.h and stdbool.h.
      	Handle various cases of secure_getenv presence, add an implementation
      	when we can test effective UID and GID.
      	(struct hsa_runtime_fn_info): New structure.
      	(hsa_runtime_fn_info hsa_fns): New variable.
      	(hsa_runtime_lib): Likewise.
      	(support_cpu_devices): Likewise.
      	(init_enviroment_variables): Load newly introduced ENV
      	variables.
      	(hsa_warn): Call hsa run-time functions via hsa_fns structure.
      	(hsa_fatal): Likewise.
      	(DLSYM_FN): New macro.
      	(init_hsa_runtime_functions): New function.
      	(suitable_hsa_agent_p): Call hsa run-time functions via hsa_fns
      	structure.  Depending on environment, also allow CPU devices.
      	(init_hsa_context): Call hsa run-time functions via hsa_fns structure.
      	(get_kernarg_memory_region): Likewise.
      	(GOMP_OFFLOAD_init_device): Likewise.
      	(destroy_hsa_program): Likewise.
      	(init_basic_kernel_info): New function.
      	(GOMP_OFFLOAD_load_image): Use it.
      	(create_and_finalize_hsa_program): Call hsa run-time functions via
      	hsa_fns structure.
      	(create_single_kernel_dispatch): Likewise.
      	(release_kernel_dispatch): Likewise.
      	(init_single_kernel): Likewise.
      	(parse_target_attributes): Allow up multiple HSA grid dimensions.
      	(get_group_size): New function.
      	(run_kernel): Likewise.
      	(GOMP_OFFLOAD_run): Outline most functionality to run_kernel.
      	(GOMP_OFFLOAD_fini_device): Call hsa run-time functions via hsa_fns
      	structure.
      	* testsuite/lib/libgomp.exp: Remove hsa_kmt_lib support.
      	* testsuite/libgomp-test-support.exp.in: Likewise.
      	* Makefile.in: Regenerated.
      	* aclocal.m4: Likewise.
      	* config.h.in: Likewise.
      	* configure: Likewise.
      	* testsuite/Makefile.in: Likewise.
      
      
      
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      
      From-SVN: r242749
      Martin Liska committed
    • re PR target/78213 (-fself-test fails on aarch64) · 3615816d
      	PR target/78213
      	* opts.c (finish_options): Set -fsyntax-only if running self
      	tests.
      
      From-SVN: r242748
      Aldy Hernandez committed
    • re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values) · 0eb078fe
      2016-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/71762
      	* match.pd ((~X & Y) -> X < Y, (X & ~Y) -> Y < X,
      	(~X | Y) -> X <= Y, (X | ~Y) -> Y <= X): Remove.
      
      	* gcc.dg/torture/pr71762-1.c: New testcase.
      	* gcc.dg/torture/pr71762-2.c: Likewise.
      	* gcc.dg/torture/pr71762-3.c: Likewise.
      	* gcc.dg/tree-ssa/forwprop-28.c: XFAIL.
      
      From-SVN: r242747
      Richard Biener committed
    • re PR lto/78472 (warning: type of 's' does not match original declaration from… · efb71232
      re PR lto/78472 (warning: type of 's' does not match original declaration from zero length bitfield in C vs C++)
      
      2016-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR lto/78472
      	* tree.c (gimple_canonical_types_compatible_p): Ignore zero-sized
      	fields.
      
      	lto/
      	* lto.c (hash_canonical_type): Ignore zero-sized fields.
      
      	* g++.dg/lto/pr78472_0.c: New testcase.
      	* g++.dg/lto/pr78472_1.C: Likewise.
      
      From-SVN: r242746
      Richard Biener committed
    • re PR tree-optimization/78154 (memcpy et al can be assumed to return non-null) · a5bb8a5c
      2016-11-23  Richard Biener  <rguenther@suse.de>
      	    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.rog>
      
      	PR tree-optimization/78154
      	* tree-vrp.c (gimple_stmt_nonzero_warnv_p): Return true if function
      	returns it's argument and the argument is nonnull.
      	* builtin-attrs.def: Define ATTR_RETURNS_NONNULL,
      	ATT_RETNONNULL_NOTHROW_LEAF.
      	* builtins.def (BUILT_IN_MEMPCPY): Change attribute to
      	ATTR_RETNONNULL_NOTHROW_LEAF.
      	(BUILT_IN_STPCPY): Likewise.
      	(BUILT_IN_STPNCPY): Likewise.
      	(BUILT_IN_MEMPCPY_CHK): Likewise.
      	(BUILT_IN_STPCPY_CHK): Likewise.
      	(BUILT_IN_STPNCPY_CHK): Likewise.
      	(BUILT_IN_STRCAT): Change attribute to ATTR_RET1_NOTHROW_NONNULL_LEAF.
      	(BUILT_IN_STRNCAT): Likewise.
      	(BUILT_IN_STRNCPY): Likewise.
      	(BUILT_IN_MEMSET_CHK): Likewise.
      	(BUILT_IN_STRCAT_CHK): Likewise.
      	(BUILT_IN_STRCPY_CHK): Likewise.
      	(BUILT_IN_STRNCAT_CHK): Likewise.
      	(BUILT_IN_STRNCPY_CHK): Likewise.
      
      testsuite/
      	* gcc.dg/tree-ssa/pr78154.c: New test.
      
      Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
      
      From-SVN: r242745
      Richard Biener committed
    • fold-const.c (tree_expr_nonzero_p): Make non-static. · e36c1cfe
      2016-11-23  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>
      
      gcc
      	* fold-const.c (tree_expr_nonzero_p) : Make non-static.
      	* fold-const.h (tree_expr_nonzero_p) : Declare.
      	* match.pd (cmp (mult:c @0 @1) (mult:c @2 @1) : New Pattern.
      
      gcc/testsuite
      	* gcc.dg/pr31096.c: New testcase.
      	* gcc.dg/pr31096-1.c: New testcase.
      
      From-SVN: r242744
      Naveen H.S committed
    • system.h (HAVE_DESIGNATED_INITIALIZERS, [...]): Do not use "defined" in macros. · fb2675cb
      gcc:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* system.h (HAVE_DESIGNATED_INITIALIZERS,
      	HAVE_DESIGNATED_UNION_INITIALIZERS): Do not use
      	"defined" in macros.
      	* doc/cpp.texi (Defined): Mention -Wexpansion-to-defined.
      	* doc/cppopts.texi (Invocation): Document -Wexpansion-to-defined.
      	* doc/invoke.texi (Warning Options): Document -Wexpansion-to-defined.
      
      gcc/c-family:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* c.opt (Wexpansion-to-defined): New.
      
      gcc/testsuite:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* gcc.dg/cpp/defined.c: Mark newly introduced warnings and
      	adjust for warning->pedwarn change.
      	* gcc.dg/cpp/defined-syshdr.c,
      	gcc.dg/cpp/defined-Wexpansion-to-defined.c,
      	gcc.dg/cpp/defined-Wextra-Wno-expansion-to-defined.c,
      	gcc.dg/cpp/defined-Wextra.c,
      	gcc.dg/cpp/defined-Wno-expansion-to-defined.c: New testcases.
      
      libcpp:
      2016-11-23  Paolo Bonzini  <bonzini@gnu.org>
      
      	* include/cpplib.h (struct cpp_options): Add new member
      	warn_expansion_to_defined.
      	(CPP_W_EXPANSION_TO_DEFINED): New enum member.
      	* expr.c (parse_defined): Warn for all uses of "defined"
      	in macros, and tie warning to CPP_W_EXPANSION_TO_DEFINED.
      	Make it a pedwarning instead of a warning.
      	* system.h (HAVE_DESIGNATED_INITIALIZERS): Do not use
      	"defined" in macros.
      
      From-SVN: r242743
      Paolo Bonzini committed
    • Fix bogus failure of uninit-19.c for avr · baf53c47
      The test fails for avr because fn1 does not get inlined into fn2. Inlining
      occurs for x86_64 because fn1's computed size equals call_stmt_size. For the
      avr, 32 bit memory moves are more expensive, and b[3] = p10[a] results in 
      a bigger size for fn1, preventing the inlining.
      
      Add -finline-small-functions to force early inliner to inline fn1.
      
      gcc/testsuite/
      2016-11-23  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
      	* gcc.dg/uninit-19.c: Add -finline-small-functions for avr.
      
      From-SVN: r242742
      Senthil Kumar Selvaraj committed
    • re PR target/60300 ([avr] Suboptimal stack pointer manipulation for frame setup) · a8050489
      gcc/
      	PR target/60300
      	* config/avr/constraints.md (Csp): Widen range to [-11..6].
      	* config/avr/avr.c (avr_prologue_setup_frame): Limit number
      	of RCALLs in prologue to 3.
      
      From-SVN: r242741
      Georg-Johann Lay committed
    • re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in… · ec1c5694
      re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps')
      
      	PR target/78451
      	* c-pragma.c (handle_pragma_target): Don't replace
      	current_target_pragma, but chainon the new args to the current one.
      
      	* gcc.target/i386/pr78451.c: New test.
      	* gcc.target/i386/pr69255-1.c: Use #pragma GCC push_options
      	and #pragma GCC pop_options around the first #pragma GCC target.
      	* gcc.target/i386/pr69255-2.c: Likewise.
      	* gcc.target/i386/pr69255-3.c: Likewise.
      
      From-SVN: r242740
      Jakub Jelinek committed
    • 2016-11-22 Michael Collison <michael.collison@arm.com> · 43fd192f
      	* config/aarch64/aarch64-protos.h
      	(aarch64_and_split_imm1, aarch64_and_split_imm2)
      	(aarch64_and_bitmask_imm): New prototypes
      	* config/aarch64/aarch64.c (aarch64_and_split_imm1):
      	New overloaded function to create bit mask covering the
      	lowest to highest bits set.
      	(aarch64_and_split_imm2): New overloaded functions to create bit
      	mask of zeros between first and last bit set.
      	(aarch64_and_bitmask_imm): New function to determine if a integer
      	is a valid two instruction "and" operation.
      	* config/aarch64/aarch64.md:(and<mode>3): New define_insn and _split
      	allowing wider range of constants with "and" operations.
      	* (ior<mode>3, xor<mode>3): Use new LOGICAL2 iterator to prevent
      	"and" operator from matching restricted constant range used for
      	ior and xor operators.
      	* config/aarch64/constraints.md (UsO constraint): New SImode constraint
      	for constants in "and" operantions.
      	(UsP constraint): New DImode constraint for constants in "and" operations.
      	* config/aarch64/iterators.md (lconst2): New mode iterator.
      	(LOGICAL2): New code iterator.
      	* config/aarch64/predicates.md (aarch64_logical_and_immediate): New
      	predicate
      	(aarch64_logical_and_operand): New predicate allowing extended constants
      	for "and" operations.
      	* testsuite/gcc.target/aarch64/and_const.c: New test to verify
      	additional constants are recognized and fewer instructions generated.
      	* testsuite/gcc.target/aarch64/and_const2.c: New test to verify
      	additional constants are recognized and fewer instructions generated.
      
      From-SVN: r242739
      Michael Collison committed
    • godump-1.c: Update expected output for recent changes. · ed9e2fa9
      	* gcc.misc-tests/godump-1.c: Update expected output for recent
      	changes.
      
      From-SVN: r242738
      Ian Lance Taylor committed
    • TILEPro/TILE-Gx: add trap patterns · 90b9beed
      	* config/tilegx/tilegx.md (trap): New pattern.
      	* config/tilepro/tilepro.md (trap): Likewise.
      
      From-SVN: r242735
      Walter Lee committed