1. 17 Jan, 2018 11 commits
    • re PR rtl-optimization/83771 (ICE: verify_flow_info failed (error: non-cold… · 1b45f260
      re PR rtl-optimization/83771 (ICE: verify_flow_info failed (error: non-cold basic block 3 reachable only by paths crossing the cold partition))
      
      	PR rtl-optimization/83771
      	* gcc.dg/pr83771.c: New test.
      
      From-SVN: r256781
      Jakub Jelinek committed
    • re PR tree-optimization/81184 (gcc.dg/pr21643.c and gcc.dg/tree-ssa/phi-opt-11.c… · 46ba991f
      re PR tree-optimization/81184 (gcc.dg/pr21643.c and gcc.dg/tree-ssa/phi-opt-11.c fail starting with r249450)
      
      	PR tree-optimization/81184
      	* gcc.dg/pr21643.c: Adjust dg-final line for logical_op_short_circuit
      	targets.
      	* gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
      
      From-SVN: r256780
      Eric Botcazou committed
    • VIEW_CONVERT_EXPR slots for strict-align targets (PR 83884) · ac9335bf
      This PR is about a case in which we VIEW_CONVERT a variable-sized
      unaligned record:
      
       <record_type 0x7ffff6d92888 check_displace_generation__T245b sizes-gimplified type_7 BLK
          size <var_decl 0x7ffff6846510 D.3499 ...>
          unit-size <var_decl 0x7ffff68465a0 D.3500 ...>
          align:8 ...>
      
      to an aligned 32-bit integer.  The strict-alignment handling of
      this case creates an aligned temporary slot, moves the operand
      into the slot in the operand's original mode, then accesses the
      slot in the more-aligned result mode.
      
      Previously the size of the temporary slot was calculated using:
      
                        HOST_WIDE_INT temp_size
                          = MAX (int_size_in_bytes (inner_type),
                                 (HOST_WIDE_INT) GET_MODE_SIZE (mode));
      
      int_size_in_bytes would return -1 for the variable-length type,
      so we'd use the size of the result mode for the slot.  r256152 replaced
      int_size_in_bytes with tree_to_poly_uint64, which triggered an ICE.
      
      If op0 has BLKmode we do a block copy of GET_MODE_SIZE (mode) bytes
      and then convert the slot to "mode":
      
                        poly_uint64 mode_size = GET_MODE_SIZE (mode);
                        ...
                        if (GET_MODE (op0) == BLKmode)
                          {
                            rtx size_rtx = gen_int_mode (mode_size, Pmode);
                            emit_block_move (new_with_op0_mode, op0, size_rtx,
                                             (modifier == EXPAND_STACK_PARM
                                              ? BLOCK_OP_CALL_PARM
                                              : BLOCK_OP_NORMAL));
                          }
                        else
                          ...
      
                        op0 = new_rtx;
                      }
                  }
      
                op0 = adjust_address (op0, mode, 0);
      
      so I think in that case just the size of "mode" is enough, even if op0
      is a fixed-size type.  For non-BLKmode op0 we first move in op0's mode
      and then convert the slot to "mode":
      
                          emit_move_insn (new_with_op0_mode, op0);
      
                        op0 = new_rtx;
                      }
                  }
      
                op0 = adjust_address (op0, mode, 0);
      
      so I think we want the maximum of the two mode sizes in that case.
      
      2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR middle-end/83884
      	* expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
      	rather than the size of inner_type to determine the stack slot size
      	when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
      
      From-SVN: r256779
      Richard Sandiford committed
    • Re-enabling of RDRND for Silvermont. · a3ed8bc3
      2018-01-15  Sebastian Peryt  <sebastian.peryt@intel.com>
      
      gcc/
      
      	PR target/83546
      	* config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
      	to PTA_SILVERMONT.
      
      2018-01-15  Sebastian Peryt  <sebastian.peryt@intel.com>
      
      gcc/testsuite/
      
      	PR target/83546
      	* gcc.target/i386/pr83546.c: New test.
      
      From-SVN: r256777
      Sebastian Peryt committed
    • elf.c (codes): Fix size to be 288. · 566588f1
      	* elf.c (codes) [GENERATE_FIXED_HUFFMAN_TABLE]: Fix size to be
      	288.
      	(main) [GENERATE_FIXED_HUFFMAN_TABLE]: Pass 288 to
      	elf_zlib_inflate_table.  Generate elf_zlib_default_dist_table.
      	(elf_zlib_default_table): Update.
      	(elf_zlib_default_dist_table): New static array.
      	(elf_zlib_inflate): Use elf_zlib_default_dist_table for dist table
      	for block type 1.
      	* ztest.c (struct zlib_test): Add uncompressed_len.
      	(tests): Initialize uncompressed_len field.  Add new test case.
      	(test_samples): Use uncompressed_len field.
      
      From-SVN: r256776
      Ian Lance Taylor committed
    • config.gcc (powerpc*-linux*-*): Add support for 64-bit little endian Linux… · 06061925
      config.gcc (powerpc*-linux*-*): Add support for 64-bit little endian Linux systems to optionally enable...
      
      2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config.gcc (powerpc*-linux*-*): Add support for 64-bit little
      	endian Linux systems to optionally enable multilibs for selecting
      	the long double type if the user configured an explicit type.
      	* config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
      	have no long double multilibs if not defined.
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
      	warn if the user used -mabi={ieee,ibm}longdouble and we built
      	multilibs for long double.
      	* config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
      	appropriate multilib option.
      	(MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
      	multilib options.
      	* config/rs6000/t-ldouble-linux64le-ibm: New configuration files
      	for building long double multilibs.
      	* config/rs6000/t-ldouble-linux64le-ieee: Likewise.
      
      From-SVN: r256775
      Michael Meissner committed
    • config.gcc (hppa*-*-linux*): Change callee copies ABI to caller copies. · dbc4d77c
      	* config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
      	copies.
      
      From-SVN: r256774
      John David Anglin committed
    • pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to 64 bits. · 1e75a380
      	* config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
      	64 bits.
      	* config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
      	128 bits.
      
      From-SVN: r256773
      John David Anglin committed
    • Daily bump. · 08afc47d
      From-SVN: r256772
      GCC Administrator committed
    • som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode variables. · 73da6b3a
      	* config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
      	variables.
      
      From-SVN: r256769
      John David Anglin committed
  2. 16 Jan, 2018 29 commits
    • pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE return value. · 7b8f4700
      	* config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
      	return value.
      
      From-SVN: r256768
      John David Anglin committed
    • gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an ADDR_EXPR,… · 12b38cca
      gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
      
      	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
      	ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
      
      From-SVN: r256766
      Eric Botcazou committed
    • PR c++/83714 - ICE checking return in template. · 035181c3
      	* typeck.c (check_return_expr): Call build_non_dependent_expr.
      
      From-SVN: r256765
      Jason Merrill committed
    • Wrestrict.c (test_strcpy_range): Bump string size of one test and add dg-warning… · a9db08a6
      Wrestrict.c (test_strcpy_range): Bump string size of one test and add dg-warning for the -Wstringop-overflow warning.
      
      	* c-c++-common/Wrestrict.c (test_strcpy_range): Bump string size of one
      	test and add dg-warning for the -Wstringop-overflow warning.
      
      From-SVN: r256764
      Eric Botcazou committed
    • Warray-bounds-4.c (test_strcpy_bounds_memarray_range): XFAIL last test on SPARC and Visium. · 6702f18b
      	* c-c++-common/Warray-bounds-4.c (test_strcpy_bounds_memarray_range):
      	XFAIL last test on SPARC and Visium.
      
      From-SVN: r256763
      Eric Botcazou committed
    • rs6000-p8swap.c (rs6000_gen_stvx): Generate different rtl trees depending on TARGET_64BIT. · 3dce35b3
      gcc/ChangeLog:
      
      2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
      	different rtl trees depending on TARGET_64BIT.
      	(rs6000_gen_lvx): Likewise.
      
      From-SVN: r256762
      Kelvin Nilsen committed
    • re PR rtl-optimization/80481 (Unoptimal additional copy instructions) · 1dbc05f9
      2018-01-16  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/80481
      	* g++.dg/pr80481.C: Exclude solaris.
      
      From-SVN: r256761
      Vladimir Makarov committed
    • patchable_function_entry-decl.c: Use 3 NOPs on Visium. · 30e96caf
      	* c-c++-common/patchable_function_entry-decl.c: Use 3 NOPs on Visium.
      	* c-c++-common/patchable_function_entry-default.c: 4 NOPs on Visium.
      	* c-c++-common/patchable_function_entry-definition.c: 2 NOPs on Visium.
      
      From-SVN: r256760
      Eric Botcazou committed
    • ldist-27.c: Skip on Visium. · ea5853a3
      	* gcc.dg/tree-ssa/ldist-27.c: Skip on Visium.
      	* gcc.dg/tree-ssa/loop-interchange-1.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-1b.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-2.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-3.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-4.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-5.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-6.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-7.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-8.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-9.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-10.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-11.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-14.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-15.c: Likewise.
      
      From-SVN: r256759
      Eric Botcazou committed
    • visium.md (nop): Tweak comment. · 2cc9e8aa
      	* config/visium/visium.md (nop): Tweak comment.
      	(hazard_nop): Likewise.
      
      From-SVN: r256758
      Eric Botcazou committed
    • re PR testsuite/77734 (FAIL: gcc.dg/plugin/must-tail-call-1.c… · 654060e2
      re PR testsuite/77734 (FAIL: gcc.dg/plugin/must-tail-call-1.c -fplugin=./must_tail_call_plugin.so (test  for excess errors))
      
      	PR testsuite/77734
      	* gcc.dg/plugin/must-tail-call-1.c: Pass -fdelayed-branch on SPARC.
      
      From-SVN: r256756
      Eric Botcazou committed
    • * testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux. · 229433c9
      From-SVN: r256754
      Eric Botcazou committed
    • rs6000.c (rs6000_opt_vars): Add entry for -mspeculate-indirect-jumps. · b50e1649
      [gcc]
      
      2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
      	-mspeculate-indirect-jumps.
      	* config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
      	for -mno-speculate-indirect-jumps.
      	(*call_indirect_elfv2<mode>_nospec): New define_insn.
      	(*call_value_indirect_elfv2<mode>): Disable for
      	-mno-speculate-indirect-jumps.
      	(*call_value_indirect_elfv2<mode>_nospec): New define_insn.
      	(indirect_jump): Emit different RTL for
      	-mno-speculate-indirect-jumps.
      	(*indirect_jump<mode>): Disable for
      	-mno-speculate-indirect-jumps.
      	(*indirect_jump<mode>_nospec): New define_insn.
      	(tablejump): Emit different RTL for
      	-mno-speculate-indirect-jumps.
      	(tablejumpsi): Disable for -mno-speculate-indirect-jumps.
      	(tablejumpsi_nospec): New define_expand.
      	(tablejumpdi): Disable for -mno-speculate-indirect-jumps.
      	(tablejumpdi_nospec): New define_expand.
      	(*tablejump<mode>_internal1): Disable for
      	-mno-speculate-indirect-jumps.
      	(*tablejump<mode>_internal1_nospec): New define_insn.
      	* config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
      	option.
      
      [gcc/testsuite]
      
      2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/safe-indirect-jump-1.c: New file.
      	* gcc.target/powerpc/safe-indirect-jump-2.c: New file.
      	* gcc.target/powerpc/safe-indirect-jump-3.c: New file.
      	* gcc.target/powerpc/safe-indirect-jump-4.c: New file.
      	* gcc.target/powerpc/safe-indirect-jump-5.c: New file.
      	* gcc.target/powerpc/safe-indirect-jump-6.c: New file.
      
      From-SVN: r256753
      Bill Schmidt committed
    • caller-save.c (insert_save): Drop unnecessary parameter. · 8fc0c8fa
              * caller-save.c (insert_save): Drop unnecessary parameter.  All
      	callers updated.
      
      From-SVN: r256751
      Artyom Skrobov committed
    • re PR libgomp/83590 ([nvptx] openacc reduction C regressions) · 47c268c4
      	PR libgomp/83590
      	* gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
      	return early, inline manually is_gimple_sizepos.  Make sure if we
      	call gimplify_expr we don't end up with a gimple constant.
      	* tree.c (variably_modified_type_p): Don't return true for
      	is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
      	* gimplify.h (is_gimple_sizepos): Remove.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r256748
      Jakub Jelinek committed
    • Two fixes for live-out SLP inductions (PR 83857) · fb2f98bb
      vect_analyze_loop_operations was calling vectorizable_live_operation
      for all live-out phis, which led to a bogus ncopies calculation in
      the pure SLP case.  I think v_a_l_o should only be passing phis
      that are vectorised using normal loop vectorisation, since
      vect_slp_analyze_node_operations handles the SLP side (and knows
      the correct slp_index and slp_node arguments to pass in, via
      vect_analyze_stmt).
      
      With that fixed we hit an older bug that vectorizable_live_operation
      didn't handle live-out SLP inductions.  Fixed by using gimple_phi_result
      rather than gimple_get_lhs for phis.
      
      2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR tree-optimization/83857
      	* tree-vect-loop.c (vect_analyze_loop_operations): Don't call
      	vectorizable_live_operation for pure SLP statements.
      	(vectorizable_live_operation): Handle PHIs.
      
      gcc/testsuite/
      	PR tree-optimization/83857
      	* gcc.dg/vect/pr83857.c: New test.
      
      From-SVN: r256747
      Richard Sandiford committed
    • re PR tree-optimization/83867 (ICE: Segmentation fault in nested_in_vect_loop_p) · e57d9a82
      2018-01-16  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83867
      	* tree-vect-stmts.c (vect_transform_stmt): Precompute
      	nested_in_vect_loop_p since the scalar stmt may get invalidated.
      
      	* gcc.dg/vect/pr83867.c: New testcase.
      
      From-SVN: r256746
      Richard Biener committed
    • re PR c/83844 (ICE with warn_if_not_aligned attribute) · 38943500
      	PR c/83844
      	* stor-layout.c (handle_warn_if_not_align): Use byte_position and
      	multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
      	If off is not INTEGER_CST, issue a may not be aligned warning
      	rather than isn't aligned.  Use isn%'t rather than isn't.
      	* fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
      	into MULT_EXPR.
      	<case MULT_EXPR>: Improve the case when bottom and one of the
      	MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
      	operand, in that case check if the other operand is multiple of
      	bottom divided by the INTEGER_CST operand.
      
      	* gcc.dg/pr83844.c: New test.
      
      From-SVN: r256745
      Jakub Jelinek committed
    • Move pa.h FUNCTION_ARG_SIZE to pa.c (PR83858) · 42b394ff
      The port-local FUNCTION_ARG_SIZE:
      
        ((((MODE) != BLKmode \
           ? (HOST_WIDE_INT) GET_MODE_SIZE (MODE) \
           : int_size_in_bytes (TYPE)) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
      
      is used by code in pa.c and by ASM_DECLARE_FUNCTION_NAME in som.h.
      Treating GET_MODE_SIZE as a constant is OK for the former but not
      the latter, which is used in target-independent code.  This caused
      a build failure on hppa2.0w-hp-hpux11.11.
      
      2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR target/83858
      	* config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
      	* config/pa/pa-protos.h (pa_function_arg_size): Declare.
      	* config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
      	pa_function_arg_size instead of FUNCTION_ARG_SIZE.
      	* config/pa/pa.c (pa_function_arg_advance): Likewise.
      	(pa_function_arg, pa_arg_partial_bytes): Likewise.
      	(pa_function_arg_size): New function.
      
      From-SVN: r256744
      Richard Sandiford committed
    • Fix whitespace in changelog · 85911661
      From-SVN: r256743
      Segher Boessenkool committed
    • Fix changelog · 0dffe6b8
      From-SVN: r256741
      Richard Sandiford committed
    • Avoid GCC 4.1 build failure in fold-const.c · 3c869ac3
      We had:
      
      	      tree t = fold_vec_perm (type, arg1, arg2,
      				      vec_perm_indices (sel, 2, nelts));
      
      where fold_vec_perm takes a const vec_perm_indices &.  GCC 4.1 apparently
      required a public copy constructor:
      
      gcc/vec-perm-indices.h:85: error: 'vec_perm_indices::vec_perm_indices(const vec_perm_indices&)' is private
      gcc/fold-const.c:11410: error: within this context
      
      even though no copy should be made here.  This patch tries to work
      around that by constructing the vec_perm_indices separately.
      
      2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
      	in a separate statement.
      
      From-SVN: r256740
      Richard Sandiford committed
    • PR libstdc++/83834 replace wildcard pattern in linker script · cce6078d
      	PR libstdc++/83834
      	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
      	pattern with exact match for std::cerr.
      
      From-SVN: r256739
      Jonathan Wakely committed
    • * MAINTAINERS (write after approval): Add myself. · 182f27e3
      From-SVN: r256738
      Sebastian Perta committed
    • Don't group gather loads (PR83847) · 82279a51
      In the testcase we were trying to group two gather loads, even though
      that isn't supported.  Fixed by explicitly disallowing grouping of
      gathers and scatters.
      
      This problem didn't show up on SVE because there we convert to
      IFN_GATHER_LOAD/IFN_SCATTER_STORE pattern statements, which fail
      the can_group_stmts_p check.
      
      2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vect-data-refs.c (vect_analyze_data_ref_accesses):
      
      gcc/testsuite/
      	* gcc.dg/torture/pr83847.c: New test.
      
      From-SVN: r256730
      Richard Sandiford committed
    • re PR rtl-optimization/83620 (ICE: in assign_by_spills, at lra-assigns.c:1470:… · 90647597
      re PR rtl-optimization/83620 (ICE: in assign_by_spills, at lra-assigns.c:1470: unable to find a register to spill with -flive-range-shrinkage --param=max-sched-ready-insns=0)
      
      	PR rtl-optimization/86620
      	* params.def (max-sched-ready-insns): Bump minimum value to 1.
      
      	* gcc.dg/pr64935-2.c: Use --param=max-sched-ready-insns=1
      	instead of --param=max-sched-ready-insns=0.
      	* gcc.target/i386/pr83620.c: New test.
      	* gcc.dg/pr83620.c: New test.
      
      From-SVN: r256729
      Jakub Jelinek committed
    • re PR rtl-optimization/83213 (peephole bug with -O2) · 6ce065b6
      	PR rtl-optimization/83213
      	* recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
      	to last if both are JUMP_INSNs.
      
      From-SVN: r256728
      Jakub Jelinek committed
    • re PR tree-optimization/83843 (wrong code at -O2) · be52ac73
      	PR tree-optimization/83843
      	* gimple-ssa-store-merging.c
      	(imm_store_chain_info::output_merged_store): Handle bit_not_p on
      	store_immediate_info for bswap/nop orig_stores.
      
      	* gcc.dg/store_merging_18.c: New test.
      
      From-SVN: r256727
      Jakub Jelinek committed
    • re PR c++/83817 (internal compiler error: tree check: expected call_expr, have… · 2bbc5c34
      re PR c++/83817 (internal compiler error: tree check: expected call_expr, have aggr_init_expr in tsubst_copy_and_build, at cp/pt.c:17822)
      
      	PR c++/83817
      	* pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
      	is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
      	instead of CALL_FROM_THUNK_P.
      
      	* g++.dg/cpp1y/pr83817.C: New test.
      
      From-SVN: r256726
      Jakub Jelinek committed