1. 23 Nov, 2017 18 commits
    • generic.texi (ANNOTATE_EXPR): Document 3rd operand. · ac9effed
      	* doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
      	* cfgloop.h (struct loop): Add unroll field.
      	* function.h (struct function): Add has_unroll bitfield.
      	* gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
      	(gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
      	* loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
      	(pass_rtl_unroll_loops::gate): Likewise.
      	* loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
      	for which loop->unroll==1.
      	(decide_unroll_constant_iterations): Use note for consistency and
      	take loop->unroll into account.  Return early if loop->unroll is set.
      	Fix thinko in existing test.
      	(decide_unroll_runtime_iterations): Use note for consistency and
      	take loop->unroll into account.
      	(decide_unroll_stupid): Likewise.
      	* lto-streamer-in.c (input_cfg): Read loop->unroll.
      	* lto-streamer-out.c (output_cfg): Write loop->unroll.
      	* tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
              New case.
      	(replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
      	(print_loop): Print loop->unroll if set.
      	* tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
      	* tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
      	* tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
      	New case.
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
      	loop->unroll is set and smaller than the trip count.  Otherwise bypass
      	entirely the heuristics if loop->unroll is set.  Remove dead note.
      	Fix off-by-one bug in other note.
      	(try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
      	(tree_unroll_loops_completely_1): Force unrolling if loop->unroll
      	is greater than 1.
      	(tree_unroll_loops_completely): Make static.
      	(pass_complete_unroll::execute): Use correct type for variable.
      	(pass_complete_unrolli::execute): Fix formatting.
      	* tree.def (ANNOTATE_EXPR): Add 3rd operand.
      ada/
      	* gcc-interface/trans.c (gnat_gimplify_stmt) <LOOP_STMT>: Pass 3rd
      	operand to ANNOTATE_EXPR and also pass unrolling hints.
      c/
      	* c-parser.c (c_parser_while_statement): Pass 3rd operand to
      	ANNOTATE_EXPR.
      	(c_parser_do_statement): Likewise.
      	(c_parser_for_statement): Likewise.
      cp/
      	* pt.c (tsubst_expr) <ANNOTATE_EXPR>: Recurse on 3rd operand.
      	* semantics.c (finish_while_stmt_cond): Pass 3rd operand to
      	ANNOTATE_EXPR.
      	(finish_do_stmt): Likewise.
      	(finish_for_cond): Likewise.
      fortran/
      	* trans-stmt.c (gfc_trans_forall_loop): Pass 3rd operand to
      	ANNOTATE_EXPR.
      
      From-SVN: r255106
      Eric Botcazou committed
    • i386.h (TARGET_PREFER_AVX256): Also enable when TARGET_PREFER_AVX128 is set. · 02a70367
      	* config/i386/i386.h (TARGET_PREFER_AVX256): Also
      	enable when TARGET_PREFER_AVX128 is set.
      
      From-SVN: r255105
      Sergey Shalnov committed
    • ipa-profile.c (ipa_propagate_frequency_1): Use count instead of frequency. · 7349698e
      	* ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
      	frequency.
      	* cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
      	(cgraph_edge::maybe_hot_p): Use sreal frequencies.
      
      From-SVN: r255104
      Jan Hubicka committed
    • ipa-fnsummary.c (record_modified_bb_info): Use sreal frequencies. · 0009a6c3
      
      	* ipa-fnsummary.c (record_modified_bb_info): Use sreal
      	frequencies. Fix estimation of aggregate parameters.
      
      	* gcc.dg/ipa/inline-1.c: Update template.
      
      From-SVN: r255103
      Jan Hubicka committed
    • cgraphclones.c (cgraph_node::create_clone): Fix updating of profile when inlining. · 8f58dbd1
      	* cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
      	when inlining.
      
      From-SVN: r255102
      Jan Hubicka committed
    • [libgccjit] Wrap RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE in JIT_{BEGIN,END}_STMT. · 120e92fc
      2017-11-23  Tom de Vries  <tom@codesourcery.com>
      
      	* libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Wrap in
      	JIT_{BEGIN,END}_STMT.
      
      From-SVN: r255101
      Tom de Vries committed
    • [sh] Wrap ASM_OUTPUT_ADDR_VEC_ELT in do {} while (0) · 356db292
      2017-11-23  Tom de Vries  <tom@codesourcery.com>
      
      	* config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
      
      From-SVN: r255100
      Tom de Vries committed
    • [libobjc] Wrap CLASS_TABLE_HASH in do {} while (0) · 7f339ecb
      2017-11-23  Tom de Vries  <tom@codesourcery.com>
      
      	* class.c (CLASS_TABLE_HASH): Wrap in "do {} while (0)".
      
      From-SVN: r255099
      Tom de Vries committed
    • [ft32] Remove semicolon after ASM_OUTPUT_ADDR_VEC_ELT · 77abf71f
      2017-11-23  Tom de Vries  <tom@codesourcery.com>
      
      	* config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
      	macro.
      
      From-SVN: r255098
      Tom de Vries committed
    • re PR target/83111 ([sh] stack smashing detected in gen_udivsi3) · e7434de8
      gcc/
      	PR target/83111
      	* config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
      	sibcall_value_pcrel_fdpic): Use local variable instead of
      	operands[3].
      	(calli_tbr_rel): Add missing operand 2.
      	(call_valuei_tbr_rel): Add missing operand 3.
      
      From-SVN: r255096
      Oleg Endo committed
    • re PR middle-end/82253 (ICE in convert_move, at expr.c:604) · 2145b601
      	PR middle-end/82253
      	* expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
      	bitpos/bitsize covering the whole destination, use store_expr only if
      	the complex mode is the same.  Otherwise, use expand_normal and if
      	it returns CONCAT, subreg each part separately instead of trying to
      	subreg the whole result.
      
      	* gfortran.dg/pr82253.f90: New test.
      
      From-SVN: r255095
      Jakub Jelinek committed
    • re PR fortran/82814 (ICE from submodule character function) · f36a7f04
      2017-11-23  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82814
      	* trans-types.c (gfc_sym_type): If a character function result
      	is missing the charlen backend_decl, use the one from the name-
      	space procedure symbol, if present.
      
      2017-11-23  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82814
      	* gfortran.dg/submodule_31.f08: New test.
      
      From-SVN: r255094
      Paul Thomas committed
    • re PR tree-optimization/23094 (store ccp, or store copy prop misses an optimization) · d7a160a4
      2017-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/23094
      	* tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
      	come here from walking over backedges in the first iteration.
      	(vn_reference_lookup_3): Skip clobbers that store the same value.
      
      	* gcc.dg/tree-ssa/ssa-fre-61.c: New testcase.
      
      From-SVN: r255093
      Richard Biener committed
    • re PR tree-optimization/81403 (wrong code at -O3) · bb9ec14d
      2017-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81403
      	* tree-ssa-pre.c (get_representative_for): Add parameter specifying
      	a block we need a leader relative to.
      	(phi_translate_1): For nary processing require a leader from
      	get_representative_for given we run expression simplification
      	using match-and-simplify.  Remove previous fix.
      
      From-SVN: r255092
      Richard Biener committed
    • re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name)) · 78bebfb2
      2017-11-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83089
      	* gcc.dg/pr83089.c: Require pthread.
      
      From-SVN: r255091
      Richard Biener committed
    • Daily bump. · f6f28ab8
      From-SVN: r255089
      GCC Administrator committed
    • gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): Use new… · 3e406d33
      gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): Use new method allocate_value_range rather than accessing the...
      
      	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
      	Use new method allocate_value_range rather than accessing the
      	vrp_value_range_pool data member directly.
      	* tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
      	to use extract_range_from_stmt method to avoid need for
      	extract_range_from_assignment method.
      	(vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
      	method rather than setting values_propgated data member directly.
      	* vr-values.h (class vr_values): Privatize vrp_value_range_pool,
      	and values propagated data members and extract_range_from_assignment
      	method.  Reorder private data members to conform to standards.
      	Add new methods set_lattice_propagation_complete and
      	allocate_value_range.
      
      From-SVN: r255086
      Jeff Law committed
  2. 22 Nov, 2017 22 commits
    • * g++.dg/abi/pr68355.C: Don't expect tail call on ia32. · d057fdc8
      From-SVN: r255085
      Jakub Jelinek committed
    • re PR c++/82401 (error: qsort comparator non-negative on sorted output: 1 in… · 6c19e703
      re PR c++/82401 (error: qsort comparator non-negative on sorted output: 1 in insert_late_enum_def_bindings on an invalid code)
      
      	PR c++/82401
      	* name-lookup.c (member_name_cmp): Return 0 if a == b.
      
      	* g++.dg/cpp0x/pr82401.C: New test.
      
      From-SVN: r255084
      Jakub Jelinek committed
    • re PR rtl-optimization/83030 (ICE in create_pseudo_cfg, at dwarf2cfi.c:2840) · 52af3804
      	PR rtl-optimization/83030
      	* doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
      	for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
      	(Insns): Delete entry for REG_CROSSING_JUMP in register notes.
      	* bb-reorder.c (update_crossing_jump_flags): Do not test whether the
      	CROSSING_JUMP_P flag is already set before setting it.
      	* cfgrtl.c (fixup_partition_crossing): Likewise.
      	* reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P insn
      	as useless.
      
      From-SVN: r255083
      Eric Botcazou committed
    • jit: update test suite for change to -Warray-bounds · d5438715
      jit.dg/test-error-array-bounds.c is a test of how libgccjit
      handles errors coming from the middle-end, using -Warray-bounds as
      an example.
      
      It started failing as of r254830 (aka 987b3316c4e7c908e3c7d2151c20971f9707ad66),
      due to that commit changing the wording of the message.
      
      This commit fixes the jit testcase by updating it to use the new
      wording.
      
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/82588
      	PR tree-optimization/82583
      	* jit.dg/test-error-array-bounds.c (verify_code): Update expected
      	error message from -Warray-bounds.
      
      From-SVN: r255082
      David Malcolm committed
    • * g++.dg/graphite/pr41562.C: Add -Wno-return-type. · 1324d3f3
      From-SVN: r255081
      Jakub Jelinek committed
    • re PR libgomp/83106 (libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5… · b13547d8
      re PR libgomp/83106 (libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=])
      
      	PR libgomp/83106
      	* target.c (gomp_target_init): Compute lengths just once and
      	use them in both malloc size and subsequent copying.
      
      From-SVN: r255080
      Jakub Jelinek committed
    • simplify-rtx.c (simplify_binary_operation_1): Handle the case where both… · 217e4393
      simplify-rtx.c (simplify_binary_operation_1): Handle the case where both arguments are using gen_const_vec_series.
      
      	* simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
      	Handle the case where both arguments are using gen_const_vec_series.
      
      From-SVN: r255079
      Jakub Jelinek committed
    • Make shift argument to eoshift0 and eoshift2 be of type index_type · a97ae559
      Test case that requires 4 GB RAM that exercises eoshift0:
      
      program main
        implicit none
        integer(1) :: line(2_8**31+10)
        line = 42
        line = eoshift(line, 2_8**31+7)
        print *, line(1:4)
        print *, line((ubound(line, 1, kind=8)-4):ubound(line, 1, kind=8))
      end program main
      
      Before patch:
      ❯ ./a.out
          0    0    0    0
          42   42   42   42   42
      
      With patch:
      ❯ ./a.out
         42   42   42    0
         0    0    0    0    0
      
      Regtested on x86_64-pc-linux-gnu.
      
      libgfortran/ChangeLog:
      
      2017-11-22  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * intrinsics/eoshift0.c (eoshift0): Make shift an index_type.
              * intrinsics/eoshift2.c (eoshift2): Make shift an index_type.
      
      From-SVN: r255077
      Janne Blomqvist committed
    • C/C++: fix quoting of "aka" typedef information (PR 62170) · ce95abc4
      PR 62170 describes a problem with how the quoting in pp_format
      interacts with the "aka" information for typedefs in %qT for
      the C family of frontends, and also now for %qH and %qI in the
      C++ frontend: we print:
      
        'Py_ssize_t* {aka int*}'
         ^^^^^^^^^^^^^^^^^^^^^^ colorized as "quote"
      
      i.e.
        '[START_COLOR]Py_ssize_t* {aka int*}[END_COLOR]'
      
      when we should print:
      
        'Py_ssize_t*' {aka 'int*'}
         ^^^^^^^^^^^        ^^^^ colorized as "quote"
      
      i.e.
        '[START_COLOR]Py_ssize_t*[END_COLOR]' {aka '[START_COLOR]int*[END_COLOR]'}
      
      where the opening and closing quote characters and colorization are
      added by the 'q' handling within pp_format.
      
      This patch fixes the quoting by updating the %T handling in C and C++
      and the %H/%I handling in C++ to insert the quoting appropriately.
      It converts the "quote" param of the pp_format_decoder callback from
      bool to bool *, allowing for the %T and %H/%I handlers to write
      false back to it, to avoid printing the closing quote for the cases
      like the above where the trailing closing quote isn't needed.
      
      It introduces pp_begin_quote/pp_end_quote to simplify this.  These
      take a "bool show_color", rather than using "pp_show_color (pp)"
      since cxx_pp's pp_show_color isn't currently initialized (since
      cxx_initialize_diagnostics happens before diagnostic_color_init).
      
      gcc/c/ChangeLog:
      	PR c++/62170
      	* c-objc-common.c (c_tree_printer): Convert penultimate param from
      	bool to bool *.  Within '%T' handling, if showing an "aka", use
      	"quoted" param to add appropriate quoting.
      
      gcc/cp/ChangeLog:
      	PR c++/62170
      	* error.c (type_to_string): Add leading comment.  Add params
      	"postprocessed", "quote", and "show_color", using them to fix
      	quoting of the "aka" for types involving typedefs.
      	(arg_to_string): Update for new params to type_to_string.
      	(cxx_format_postprocessor::handle): Likewise.
      	(cp_printer): Convert penultimate param from bool to bool *.
      	Update call to type_to_string and calls to
      	defer_phase_2_of_type_diff.
      
      gcc/fortran/ChangeLog:
      	PR c++/62170
      	* error.c (gfc_notify_std): Convert "quoted" param from bool to
      	bool *.
      
      gcc/ChangeLog:
      	PR c++/62170
      	* pretty-print.c (pp_format): Move quoting implementation to
      	pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
      	to pass address of "quote" local.
      	(pp_begin_quote): New function.
      	(pp_end_quote): New function.
      	* pretty-print.h (printer_fn): Convert penultimate param from bool
      	to bool *.
      	(pp_begin_quote): New decl.
      	(pp_end_quote): New decl.
      	* tree-diagnostic.c (default_tree_printer): Convert penultimate
      	param from bool to bool *.
      	* tree-diagnostic.h (default_tree_printer): Likewise.
      
      gcc/testsuite/ChangeLog:
      	PR c++/62170
      	* g++.dg/diagnostic/aka1.C: Update expected error messages to
      	reflect fixes to quoting.
      	* g++.dg/diagnostic/aka2.C: New test case.
      	* g++.dg/parse/error55.C: Update expected error messages to
      	reflect fixes to quoting.
      	* gcc.dg/diag-aka-1.c: Likewise.
      	* gcc.dg/diag-aka-2.c: New test case.
      	* gcc.dg/pr13804-1.c: Update expected error messages to reflect
      	fixes to quoting.
      	* gcc.dg/pr56980.c: Likewise.
      	* gcc.dg/pr65050.c: Likewise.
      	* gcc.dg/redecl-14.c: Likewise.
      	* gcc.dg/utf16-4.c Likewise.
      	* gcc.target/i386/sse-vect-types.c (__m128d): Likewise.
      	* obj-c++.dg/invalid-type-1.mm: Likewise.
      	* objc.dg/proto-lossage-4.m: Likewise.
      
      From-SVN: r255076
      David Malcolm committed
    • target-supports.exp (check_effective_target_bswap16): Remove · d8d9aa38
      	* lib/target-supports.exp (check_effective_target_bswap16): Remove
      	(check_effective_target_bswap32): Ditto.
      	(check_effective_target_bswap64): Ditto.
      	* gcc.dg/optimize-bswaphi-1.c: Use bswap effective
      	target instead of bswap16.
      	* gcc.dg/optimize-bswapsi-1.c: Use bswap effective
      	target instead of bswap32.
      	* gcc.dg/optimize-bswapsi-2.c: Ditto.
      	* gcc.dg/optimize-bswapsi-3.c: Ditto.
      	* gcc.dg/optimize-bswapsi-4.c: Ditto.
      	* gcc.dg/optimize-bswapsi-5.c: Ditto.
      	* gcc.dg/pr77673.c: Ditto.
      	* gcc.dg/optimize-bswapdi-1.c: Use bswap effective
      	target instead of bswap64.
      	* gcc.dg/optimize-bswapdi-2.c: Ditto.
      	* gcc.dg/optimize-bswapdi-3.c: Ditto.
      
      From-SVN: r255075
      Uros Bizjak committed
    • * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer) · a5de02e9
      	Initialize vr_values.
      	(evrp_range_analyzer::try_find_new_range): Call methods attached to
      	vr_values via vr_values class instance rather than delegators.
      	(evrp_range_analyzer::record_ranges_from_phis): Likewise.
      	(evrp_range_analyzer::record_ranges_from_stmt): Likewise.
      	(evrp_range_analyzer::push_value_range): Likewise.
      	(evrp_range_analyzer::pop_value_range): Likewise.
      	* gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
      	most delegators.  Those remaining are exposed as public interfaces.
      	Make vr_values a pointer and private.
      	(evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
      	vr_values.
      	(evrp_range_analyzer::get_vr_value): New method.
      	* gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
      	(evrp_folder::evrp_folder): New ctor to initialize vr_values.
      	(class evrp_dom_walker): Attach evrp_folder class, initialize
      	it in the ctor.  Remove temporary delegators.
      	(evrp_dom_walker::before_dom_children): Call methods in attached
      	evrp_range_analyzer class via class instance pointer.  Use
      	free value_range_constant_singleton to remove need for
      	op_with_constant_singleton_value delegator method.  Do not
      	create a vrp_prop class instance for every call!  Narrow
      	scope of a couple variables.
      	(evrp_dom_walker::cleanup): Call methods in attached
      	evrp_range_analyzer class via class instance pointer.
      	* vr-values.h (class vr_values): Privatize many methods and
      	data members.
      
      From-SVN: r255074
      Jeff Law committed
    • Replace REDUC_*_EXPRs with internal functions. · 16d24520
      This patch replaces the REDUC_*_EXPR tree codes with internal functions.
      This is needed so that the upcoming in-order reductions can also use
      internal functions without too much complication.
      
      2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
      	* cfgexpand.c (expand_debug_expr): Remove handling for them.
      	* expr.c (expand_expr_real_2): Likewise.
      	* fold-const.c (const_unop): Likewise.
      	* optabs-tree.c (optab_for_tree_code): Likewise.
      	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
      	* tree-inline.c (estimate_operator_cost): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	(op_code_prio): Likewise.
      	(op_symbol_code): Likewise.
      	* internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
      	(IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
      	* internal-fn.c (direct_internal_fn_optab): New function.
      	(direct_internal_fn_array, direct_internal_fn_supported_p
      	(internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
      	* fold-const-call.c (fold_const_reduction): New function.
      	(fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
      	CFN_REDUC_MIN.
      	* tree-vect-loop.c: Include internal-fn.h.
      	(reduction_code_for_scalar_code): Rename to...
      	(reduction_fn_for_scalar_code): ...this and return an internal
      	function.
      	(vect_model_reduction_cost): Take an internal_fn rather than
      	a tree_code.
      	(vect_create_epilog_for_reduction): Likewise.  Build calls rather
      	than assignments.
      	(vectorizable_reduction): Use internal functions rather than tree
      	codes for the reduction operation.  Update calls to the functions
      	above.
      	* config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
      	Use calls to internal functions rather than REDUC tree codes.
      	* config/aarch64/aarch64-simd.md: Update comment accordingly.
      
      From-SVN: r255073
      Richard Sandiford committed
    • PR 83097 Use __BYTE_ORDER__ predefined macro instead of runtime check · 5675291d
      By using the __BYTE_ORDER__ predefined macro we don't need the
      determine_endianness function anymore.
      
      Regtested on x86_64-pc-linux-gnu.
      
      libgfortran/ChangeLog:
      
      2017-11-22  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR libfortran/83097
      	* io/inquire.c (inquire_via_unit): Use __BYTE_ORDER__ predefined
      	macro.
      	* io/open.c (st_open): Likewise.
      	* io/transfer.c (data_transfer_init): Likewise.
      	* io/write.c (btoa_big): Likewise.
      	(otoa_big): Likewise.
      	(ztoa_big): Likewise.
      	* libgfortran.h (big_endian): Remove variable.
      	(GFOR_POINTER_TO_L1): Use __BYTE_ORDER__ macro.
      	* runtime/main.c (determine_endianness): Remove function.
      	(init): Remove call to determine_endianness.
      	* runtime/minimal.c: Remove setting big_endian variable.
      
      From-SVN: r255072
      Janne Blomqvist committed
    • [PATCH] Add myself as GCC maintainer · 90b415f6
      *** ChangeLog ***
      
      2017-11-22  Sudakshina Das  <sudi.das@arm.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r255071
      Sudakshina Das committed
    • re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments) · ddc9995b
      2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/36313
      	* Makefile.am: Add i_maxloc0s_c, i_maxloc1s_c, i_maxloc2s_c,
      	i_minloc0s_c, i_minloc1s_c and i_minloc2s_c.
      	* Makefile.in: Regenerated.
              * generated/maxloc0_16_s1.c: New file.
              * generated/maxloc0_16_s4.c: New file.
              * generated/maxloc0_4_s1.c: New file.
              * generated/maxloc0_4_s4.c: New file.
              * generated/maxloc0_8_s1.c: New file.
              * generated/maxloc0_8_s4.c: New file.
              * generated/maxloc1_16_s1.c: New file.
              * generated/maxloc1_16_s4.c: New file.
              * generated/maxloc1_4_s1.c: New file.
              * generated/maxloc1_4_s4.c: New file.
              * generated/maxloc1_8_s1.c: New file.
              * generated/maxloc1_8_s4.c: New file.
              * generated/maxloc2_16_s1.c: New file.
              * generated/maxloc2_16_s4.c: New file.
              * generated/maxloc2_4_s1.c: New file.
              * generated/maxloc2_4_s4.c: New file.
              * generated/maxloc2_8_s1.c: New file.
              * generated/maxloc2_8_s4.c: New file.
              * generated/minloc0_16_s1.c: New file.
              * generated/minloc0_16_s4.c: New file.
              * generated/minloc0_4_s1.c: New file.
              * generated/minloc0_4_s4.c: New file.
              * generated/minloc0_8_s1.c: New file.
              * generated/minloc0_8_s4.c: New file.
              * generated/minloc1_16_s1.c: New file.
              * generated/minloc1_16_s4.c: New file.
              * generated/minloc1_4_s1.c: New file.
              * generated/minloc1_4_s4.c: New file.
              * generated/minloc1_8_s1.c: New file.
              * generated/minloc1_8_s4.c: New file.
              * generated/minloc2_16_s1.c: New file.
              * generated/minloc2_16_s4.c: New file.
              * generated/minloc2_4_s1.c: New file.
              * generated/minloc2_4_s4.c: New file.
              * generated/minloc2_8_s1.c: New file.
              * generated/minloc2_8_s4.c: New file.
              * m4/iforeach-s.m4: New file.
              * m4/ifunction-s.m4: New file.
              * m4/maxloc0s.m4: New file.
              * m4/maxloc1s.m4: New file.
              * m4/maxloc2s.m4: New file.
              * m4/minloc0s.m4: New file.
              * m4/minloc1s.m4: New file.
              * m4/minloc2s.m4: New file.
      	* gfortran.map: Add new functions.
      	* libgfortran.h: Add gfc_array_s1 and gfc_array_s4.
      
      2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/36313
      	* check.c (int_or_real_or_char_check_f2003): New function.
      	* iresolve.c (gfc_resolve_maxloc): Add number "2" for
      	character arguments and rank-zero return value.
      	(gfc_resolve_minloc): Likewise.
      	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Handle case of
      	character arguments and rank-zero return value by removing
      	unneeded arguments and calling the library function.
      
      2017-11-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/36313
      	* gfortran.dg/maxloc_string_1.f90: New test.
      	* gfortran.dg/minloc_string_1.f90: New test.
      
      From-SVN: r255070
      Thomas Koenig committed
    • vxworks.c (vxworks_override_options): Pick default dwarf version from macro… · 824a2b3d
      vxworks.c (vxworks_override_options): Pick default dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
      
      2017-11-22  Olivier Hainque  <hainque@adacore.com>
      
             * config/vxworks.c (vxworks_override_options): Pick default
      	dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
             * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
             DWARF_GNAT_ENCODINGS_DEFAULT.
             * config/vxworksae.h: Likewise.
      
      From-SVN: r255069
      Olivier Hainque committed
    • Avoid two_valued_val_range_p for pointers. · e54675bb
      2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR tree-optimization/83104
      gcc/
      	* vr-values.c (simplify_stmt_using_ranges): Check integral argument,
      	not result.
      
      gcc/testsuite/
      	* gcc.c-torture/compile/pr83104.c: New file.
      
      From-SVN: r255068
      Marc Glisse committed
    • [ARM] Fix more -Wreturn-type fallout (gcc.target/arm/pr56184.C). · 29a3136e
      2017-11-22  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* gcc.target/arm/pr56184.C: Add -Wno-return-type to dg-options.
      
      From-SVN: r255067
      Christophe Lyon committed
    • re PR c++/60336 (empty struct value is passed differently in C and C++) · 974aedcc
      	PR c++/60336
      	PR middle-end/67239
      	PR target/68355
      	* c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* class.c (layout_class_type): Set DECL_PADDING_P on padding.
      	* decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P.
      	(grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P.
      
      	* calls.c (initialize_argument_information): Call
      	warn_parameter_passing_abi target hook.
      	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
      	argument onto stack.
      	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
      	* common.opt: Update -fabi-version description.
      	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
      	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
      	int_size_in_bytes.
      	(ix86_is_empty_record): New function.
      	(ix86_warn_parameter_passing_abi): New function.
      	(TARGET_EMPTY_RECORD_P): Redefine.
      	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
      	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
      	* doc/tm.texi: Regenerated.
      	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
      	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
      	* dwarf2out.c (get_ultimate_context): Move to tree.c.
      	* explow.c (hard_function_value): Call arg_int_size_in_bytes
      	instead of int_size_in_bytes.
      	* expr.c (copy_blkmode_to_reg): Likewise.
      	* function.c (aggregate_value_p): Return 0 for empty types.
      	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook.
      	(locate_and_pad_parm): Call arg size_in_bytes instead
      	size_in_bytes.
      	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
      	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
      	* target.def (empty_record_p, warn_parameter_passing_abi): New target
      	hooks.
      	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
      	(std_gimplify_va_arg_expr): Skip empty records.  Call
      	arg_size_in_bytes instead size_in_bytes.
      	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
      	* tree-core.h (tree_type_common): Add empty_flag.
      	(tree_decl_common): Update comments.
      	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree.c (default_is_empty_type): New function.
      	(default_is_empty_record): New function.
      	(arg_int_size_in_bytes): New function.
      	(arg_size_in_bytes): New function.
      	(get_ultimate_context): New function.
      	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
      	TRANSLATION_UNIT_WARN_EMPTY_P.
      	(default_is_empty_record, arg_int_size_in_bytes,
      	arg_size_in_bytes, get_ultimate_context): Declare.
      
      	* g++.dg/abi/empty12.C: New test.
      	* g++.dg/abi/empty12.h: New test.
      	* g++.dg/abi/empty12a.c: New test.
      	* g++.dg/abi/empty13.C: New test.
      	* g++.dg/abi/empty13.h: New test.
      	* g++.dg/abi/empty13a.c: New test.
      	* g++.dg/abi/empty14.C: New test.
      	* g++.dg/abi/empty14.h: New test.
      	* g++.dg/abi/empty14a.c: New test.
      	* g++.dg/abi/empty15.C: New test.
      	* g++.dg/abi/empty15.h: New test.
      	* g++.dg/abi/empty15a.c: New test.
      	* g++.dg/abi/empty16.C: New test.
      	* g++.dg/abi/empty16.h: New test.
      	* g++.dg/abi/empty16a.c: New test.
      	* g++.dg/abi/empty17.C: New test.
      	* g++.dg/abi/empty17.h: New test.
      	* g++.dg/abi/empty17a.c: New test.
      	* g++.dg/abi/empty18.C: New test.
      	* g++.dg/abi/empty18.h: New test.
      	* g++.dg/abi/empty18a.c: New test.
      	* g++.dg/abi/empty19.C: New test.
      	* g++.dg/abi/empty19.h: New test.
      	* g++.dg/abi/empty19a.c: New test.
      	* g++.dg/abi/empty20.C: New test.
      	* g++.dg/abi/empty21.C: New test.
      	* g++.dg/abi/empty22.C: New test.
      	* g++.dg/abi/empty22.h: New test.
      	* g++.dg/abi/empty22a.c: New test.
      	* g++.dg/abi/empty23.C: New test.
      	* g++.dg/abi/empty24.C: New test.
      	* g++.dg/abi/empty25.C: New test.
      	* g++.dg/abi/empty25.h: New test.
      	* g++.dg/abi/empty25a.c: New test.
      	* g++.dg/abi/empty26.C: New test.
      	* g++.dg/abi/empty26.h: New test.
      	* g++.dg/abi/empty26a.c: New test.
      	* g++.dg/abi/empty27.C: New test.
      	* g++.dg/abi/empty28.C: New test.
      	* g++.dg/abi/pr60336-1.C: New test.
      	* g++.dg/abi/pr60336-10.C: New test.
      	* g++.dg/abi/pr60336-11.C: New test.
      	* g++.dg/abi/pr60336-12.C: New test.
      	* g++.dg/abi/pr60336-2.C: New test.
      	* g++.dg/abi/pr60336-3.C: New test.
      	* g++.dg/abi/pr60336-4.C: New test.
      	* g++.dg/abi/pr60336-5.C: New test.
      	* g++.dg/abi/pr60336-6.C: New test.
      	* g++.dg/abi/pr60336-7.C: New test.
      	* g++.dg/abi/pr60336-8.C: New test.
      	* g++.dg/abi/pr60336-9.C: New test.
      	* g++.dg/abi/pr68355.C: New test.
      	* g++.dg/lto/pr60336_0.C: New test.
      
      Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r255066
      Marek Polacek committed
    • [ARM] Factor out CMSE register clearing code · fc7160b2
      Functions cmse_nonsecure_call_clear_caller_saved and
      cmse_nonsecure_entry_clear_before_return both contain very similar code
      to clear registers. What's worse, they differ slightly at times so if a
      bug is found in one careful thoughts is needed to decide whether the
      other function needs fixing too.
      
      This commit addresses the situation by factoring the two pieces of code
      into a new function. In doing so the code generated to clear VFP
      registers in cmse_nonsecure_call now uses the same sequence as
      cmse_nonsecure_entry functions. Tests expectation are thus updated
      accordingly.
      
      2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.c (cmse_clear_registers): New function.
          (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
          code by call to cmse_clear_registers.
          (cmse_nonsecure_entry_clear_before_return): Likewise.
      
          gcc/testsuite/
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Adapt expectations
          to vmov instructions now generated.
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Likewise.
      
      From-SVN: r255065
      Thomas Preud'homme committed
    • 2017-11-22 Tamar Christina <tamar.christina@arm.com> · 9388732a
      	* config/arm/arm_neon.h (vdot_u32, vdotq_u32)
      	(vdot_s32, vdotq_s32): New.
      	(vdot_lane_u32, vdotq_lane_u32): New.
      	(vdot_lane_s32, vdotq_lane_s32): New.
      
      
      gcc/testsuite/
      2017-11-22  Tamar Christina  <tamar.christina@arm.com>
      
      	* gcc.target/arm/simd/vdot-compile.c: New.
      	* gcc.target/arm/simd/vect-dot-qi.h: New.
      	* gcc.target/arm/simd/vect-dot-s8.c: New.
      	* gcc.target/arm/simd/vect-dot-u8.c: New
      
      From-SVN: r255064
      Tamar Christina committed
    • target-supports.exp (check_effective_target_bswap16): Do not skip on alpha and x86 targets. · e88efb99
      	* lib/target-supports.exp (check_effective_target_bswap16):
      	Do not skip on alpha and x86 targets.
      
      From-SVN: r255063
      Uros Bizjak committed