1. 23 Nov, 2016 31 commits
    • 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
    • TILE-Gx... · 0f525c3e
      TILE-Gx: fixes the zero_extract/sign_extract patterns so that they
      properly handle the case when pos + size > number of bits in a word.
      
      	* config/tilegx/tilegx.md (*zero_extract): Use
      	  define_insn_and_split instead of define_insn; Handle pos +
      	  size > 64.
      	  (*sign_extract): Likewise.
      
      From-SVN: r242734
      Walter Lee committed
    • re PR tree-optimization/78455 (ICE in operator[], at vec.h:732) · 3135d8fe
      	PR tree-optimization/78455
      	* tree-ssa-uninit.c (can_chain_union_be_invalidated_p): Fix typo.
      
      	* gcc.dg/uninit-23.c: New.
      
      From-SVN: r242733
      Marek Polacek committed
    • Daily bump. · c0137dcc
      From-SVN: r242732
      GCC Administrator committed
  2. 22 Nov, 2016 9 commits
    • re PR fortran/78479 (ICE in gfc_apply_init, at fortran/expr.c:4135) · f8a6e41f
      2016-11-22  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/78479
      	* gfortran.dg/char_component_initializer_3.f90: Add PR number in a
      	comment.
      
      From-SVN: r242729
      Steven G. Kargl committed
    • re PR go/78431 (ICE in go_append_padding, at godump.c:636) · fca7c764
      	PR go/78431
      	PR go/78432
      	* godump.c (go_format_type): Always pass alignment as 1 when
      	calling go_append_padding at end of struct/union.
      
      From-SVN: r242728
      Ian Lance Taylor committed
    • compiler: relocate ID encoding utilities to gofrontend · f3878205
          
          Relocate the code that encodes/sanitizes identifiers to make them
          assembler-friendly, moving it from the back end to the front end; the
          decisions about when to encode an identifier and the calls to the
          encoding helpers now take place entirely in gofrontend.
          
          Reviewed-on: https://go-review.googlesource.com/33424
      
      	* go-gcc.cc (char_needs_encoding): Remove.
      	(needs_encoding, fetch_utf8_char, encode_id): Remove.
      	(Gcc_backend::global_variable): Add asm_name parameter.  Don't
      	compute asm_name here.
      	(Gcc_backend::implicit_variable): Likewise.
      	(Gcc_backend::implicit_variable_reference): Likewise.
      	(Gcc_backend::immutable_struct): Likewise.
      	(Gcc_backend::immutable_struct_reference): Likewise.
      	* Make-lang.in (GO_OBJS): Add go/go-encode-id.o.
      
      From-SVN: r242726
      Than McIntosh committed
    • re PR fortran/78479 (ICE in gfc_apply_init, at fortran/expr.c:4135) · 7e98cccb
      2016-11-22  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/78479
      	* expr.c (gfc_apply_init):  Allocate a charlen if needed.
      
      2016-11-22  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/78479
      	* gfortran.dg/char_component_initializer_3.f90: New test.
      
      From-SVN: r242725
      Steven G. Kargl committed
    • re PR go/77910 (go: open zversion.go: no such file or directory) · 7239bf74
      	PR go/77910
          cmd/go: don't check standard packages when using gccgo
          
          This copies https://golang.org/cl/33295 to libgo.
          
          This fixes GCC PR 77910.
          
          Reviewed-on: https://go-review.googlesource.com/33471
      
      From-SVN: r242724
      Ian Lance Taylor committed
    • re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in… · f0515366
      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
      	* config/i386/avx512bwintrin.h (_mm512_setzero_qi,
      	_mm512_setzero_hi): Removed.
      	(_mm512_maskz_mov_epi16, _mm512_maskz_loadu_epi16,
      	_mm512_maskz_mov_epi8, _mm512_maskz_loadu_epi8,
      	_mm512_maskz_broadcastb_epi8, _mm512_maskz_set1_epi8,
      	_mm512_maskz_broadcastw_epi16, _mm512_maskz_set1_epi16,
      	_mm512_mulhrs_epi16, _mm512_maskz_mulhrs_epi16, _mm512_mulhi_epi16,
      	_mm512_maskz_mulhi_epi16, _mm512_mulhi_epu16,
      	_mm512_maskz_mulhi_epu16, _mm512_maskz_mullo_epi16,
      	_mm512_cvtepi8_epi16, _mm512_maskz_cvtepi8_epi16, _mm512_cvtepu8_epi16,
      	_mm512_maskz_cvtepu8_epi16, _mm512_permutexvar_epi16,
      	_mm512_maskz_permutexvar_epi16, _mm512_avg_epu8, _mm512_maskz_avg_epu8,
      	_mm512_maskz_add_epi8, _mm512_maskz_sub_epi8, _mm512_avg_epu16,
      	_mm512_maskz_avg_epu16, _mm512_subs_epi8, _mm512_maskz_subs_epi8,
      	_mm512_subs_epu8, _mm512_maskz_subs_epu8, _mm512_adds_epi8,
      	_mm512_maskz_adds_epi8, _mm512_adds_epu8, _mm512_maskz_adds_epu8,
      	_mm512_maskz_sub_epi16, _mm512_subs_epi16, _mm512_maskz_subs_epi16,
      	_mm512_subs_epu16, _mm512_maskz_subs_epu16, _mm512_maskz_add_epi16,
      	_mm512_adds_epi16, _mm512_maskz_adds_epi16, _mm512_adds_epu16,
      	_mm512_maskz_adds_epu16, _mm512_srl_epi16, _mm512_maskz_srl_epi16,
      	_mm512_packs_epi16, _mm512_sll_epi16, _mm512_maskz_sll_epi16,
      	_mm512_maddubs_epi16, _mm512_maskz_maddubs_epi16, _mm512_unpackhi_epi8,
      	_mm512_maskz_unpackhi_epi8, _mm512_unpackhi_epi16,
      	_mm512_maskz_unpackhi_epi16, _mm512_unpacklo_epi8,
      	_mm512_maskz_unpacklo_epi8, _mm512_unpacklo_epi16,
      	_mm512_maskz_unpacklo_epi16, _mm512_shuffle_epi8,
      	_mm512_maskz_shuffle_epi8, _mm512_min_epu16, _mm512_maskz_min_epu16,
      	_mm512_min_epi16, _mm512_maskz_min_epi16, _mm512_max_epu8,
      	_mm512_maskz_max_epu8, _mm512_max_epi8, _mm512_maskz_max_epi8,
      	_mm512_min_epu8, _mm512_maskz_min_epu8, _mm512_min_epi8,
      	_mm512_maskz_min_epi8, _mm512_max_epi16, _mm512_maskz_max_epi16,
      	_mm512_max_epu16, _mm512_maskz_max_epu16, _mm512_sra_epi16,
      	_mm512_maskz_sra_epi16, _mm512_srav_epi16, _mm512_maskz_srav_epi16,
      	_mm512_srlv_epi16, _mm512_maskz_srlv_epi16, _mm512_sllv_epi16,
      	_mm512_maskz_sllv_epi16, _mm512_maskz_packs_epi16, _mm512_packus_epi16,
      	_mm512_maskz_packus_epi16, _mm512_abs_epi8, _mm512_maskz_abs_epi8,
      	_mm512_abs_epi16, _mm512_maskz_abs_epi16, _mm512_dbsad_epu8,
      	_mm512_maskz_dbsad_epu8, _mm512_srli_epi16, _mm512_maskz_srli_epi16,
      	_mm512_slli_epi16, _mm512_maskz_slli_epi16, _mm512_shufflehi_epi16,
      	_mm512_maskz_shufflehi_epi16, _mm512_shufflelo_epi16,
      	_mm512_maskz_shufflelo_epi16, _mm512_srai_epi16,
      	_mm512_maskz_srai_epi16, _mm512_packs_epi32,
      	_mm512_maskz_packs_epi32, _mm512_packus_epi32,
      	_mm512_maskz_packus_epi32): Use _mm512_setzero_si512 instead of
      	_mm512_setzero_qi or _mm512_setzero_hi.
      	(_mm512_maskz_alignr_epi8, _mm512_dbsad_epu8,
      	_mm512_maskz_dbsad_epu8): Formatting fixes.
      	(_mm512_srli_epi16, _mm512_maskz_srli_epi16, _mm512_slli_epi16,
      	_mm512_maskz_slli_epi16, _mm512_shufflehi_epi16,
      	_mm512_maskz_shufflehi_epi16, _mm512_shufflelo_epi16,
      	_mm512_maskz_shufflelo_epi16, _mm512_srai_epi16,
      	_mm512_maskz_srai_epi16): Use _mm512_setzero_si512 instead of
      	_mm512_setzero_qi or _mm512_setzero_hi.
      
      From-SVN: r242723
      Jakub Jelinek committed
    • array-notation-common.c (cilkplus_extract_an_trplets): Fix indentation and formatting. · cacd29be
      	* array-notation-common.c (cilkplus_extract_an_trplets): Fix
      	indentation and formatting.
      
      From-SVN: r242721
      Nathan Sidwell committed
    • gcc-ar.c (main): Fix indentation. · 730c9e75
      	gcc/
      	* gcc-ar.c (main): Fix indentation.
      	* gcov-io.c (gcov_write_summary): Remove extraneous {...}
      	* ggc-page.c (move_ptes_to_front): Fix formatting.
      	* hsa-dump.c (dump_has_cfun): Fix indentation.
      	* sel-sched-ir.h: Remove trailing blank lines.
      
      	gcc/c-family/
      	* array-notation-common.c (cilkplus_extrat_an_triplets): Fix
      	indentation.
      
      From-SVN: r242719
      Nathan Sidwell committed
    • runtime: rewrite panic/defer code from C to Go · 9d1e3afb
          
          The actual stack unwind code is still in C, but the rest of the code,
          notably all the memory allocation, is now in Go.  The names are changed
          to the names used in the Go 1.7 runtime, but the code is necessarily
          somewhat different.
          
          The __go_makefunc_can_recover function is dropped, as the uses of it
          were removed in https://golang.org/cl/198770044.
          
          Reviewed-on: https://go-review.googlesource.com/33414
      
      From-SVN: r242715
      Ian Lance Taylor committed