1. 17 Jan, 2018 21 commits
    • i386.c (indirect_thunk_name): Declare regno as unsigned int. · a6574dbe
      	* config/i386/i386.c (indirect_thunk_name): Declare regno
      	as unsigned int.  Compare regno with INVALID_REGNUM.
      	(output_indirect_thunk): Ditto.
      	(output_indirect_thunk_function): Ditto.
      	(ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
      	in the call to output_indirect_thunk_function.
      
      From-SVN: r256797
      Uros Bizjak committed
    • Fix failure building LLVM with location wrapper nodes (PR c++/83799) · ab612f39
      PR c++/83799 reports a failure building LLVM due to a bogus
      "no matching function for call to" error at a callsite like this:
        TLI->getTypeLegalizationCost(DL);
      where "DL" is from:
        using TargetTransformInfoImplBase::DL;
      
      The root cause is that type_dependent_expression_p on a USING_DECL
      should return true when processing a template, but after r256448 the
      the argument at the callsite is a location wrapper around the USING_DECL,
      and type_dependent_expression_p erroneously returns false for it, as
      it is comparing tree codes, and failing a match, then looking at types.
      
      This prevents cp_parser_postfix_expression from using the
      "build_min_nt_call_vec" path for handling the call, instead erroneously
      handling it via build_new_method_call (which fails for this case).
      
      This patch fixes the problem by stripping any location wrappers before
      the various tree code tests in type_dependent_expression_p.   It fixes
      the reduced test case, and the full BasicTargetTransformInfo.ii; after
      this patch, the assembly generated for that latter case is identical to
      that generated before r256448.
      
      gcc/cp/ChangeLog:
      	PR c++/83799
      	* pt.c (type_dependent_expression_p): Strip any location wrapper
      	before testing tree codes.
      	(selftest::test_type_dependent_expression_p): New function.
      	(selftest::cp_pt_c_tests): Call it.
      
      gcc/testsuite/ChangeLog:
      	PR c++/83799
      	* g++.dg/wrappers/pr83799.C: New test case.
      
      From-SVN: r256796
      David Malcolm committed
    • [C++/83739] bogus error tsubsting range for in generic lambda · f0fbe57d
      https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01554.html
      	PR c++/83739
      	* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
      	this not a final instantiation.
      
      	PR c++/83739
      	* g++.dg/cpp1y/pr83739.C: New.
      
      From-SVN: r256795
      Nathan Sidwell committed
    • libgo: update to Go1.10beta2 release · c6d6367f
          
          Reviewed-on: https://go-review.googlesource.com/87897
      
      From-SVN: r256794
      Ian Lance Taylor committed
    • overflow8.c: Pass -fno-if-conversion. · 9bff0086
      	* gcc.target/visium/overflow8.c: Pass -fno-if-conversion.
      	* gcc.target/visium/overflow16.c: Likewise.
      	* gcc.target/visium/overflow32.c: Likewise.
      
      From-SVN: r256793
      Eric Botcazou committed
    • [arm] Convert gcc.target/arm/stl-cond.c into an RTL test · 1e49b79a
      This is an awkward testsuite failure. The original bug was that we were failing to put out
      the conditional code in the conditional form of the STL instruction (oops!).
      So we wanted to output STLNE, but instead output STL.
      The testacase relies on if-conversion to conditionalise the insn for STL.
      However, ever since r251643 the expansion of a non-relaxed atomic store
      always includes a compiler barrier. That blocks if-conversion in all cases.
      
      So there's no easy way to get to a conditional STL instruction from a C program.
      But we do want to test for the original bug fix that if the RTL insn for STL is conditionalised
      it should output the conditional code.
      
      The solution in this patch is to convert the test into an RTL test with the COND_EXEC form
      of the STL insn and scan the assembly output there.
      This seems to work fine, and gives us an opportunity to create a gcc.dg/rtl/arm directory
      in the RTL tests.
      
      This now makes the gcc.target/arm/stl-cond.c disappear (as the test is deleted) and
      the new test in gcc.dg/rtl/arm/stl-cond.c passes.
      
           * gcc.dg/rtl/arm/stl-cond.c: New test.
           * gcc.target/arm/stl-cond.c: Delete.
      
      From-SVN: r256785
      Kyrylo Tkachov committed
    • [arm] Fix gcc.target/arm/pr40887.c directives · d83fae9d
      This patch converts gcc.target/arm/pr40887.c to use the proper effective target check and dg-add-options for armv5te
      so that we avoid situations where we end up trying to compile the test with a Thumb1 hard-float ABI, which makes the
      compiler complain.
      
      This allows the test to pass gracefully for me for my compiler configured with:
      --with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb
      
           * gcc.target/arm/pr40887.c: Add armv5te effective target checks and
           directives.
      
      From-SVN: r256784
      Kyrylo Tkachov committed
    • re PR tree-optimization/83843 (wrong code at -O2) · b67d554c
      	PR tree-optimization/83843
      	* gcc.dg/store_merging_18.c: Don't expect "Merging successful" on arm.
      	* gcc.dg/store_merging_19.c: New test.
      
      From-SVN: r256783
      Jakub Jelinek committed
    • [arm] Fix gcc.target/arm/xor-and.c · 5a08c6f4
      This test is naughty because it doesn't use the proper effective target checks
      and add-options mechanisms for setting a Thumb1 target, which leads to Thumb1 hard-float errors
      when testing a toolchain configured with --with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb.
      
      This patch fixes that in the obvious way.
      
      	* gcc.target/arm/xor-and.c: Fix armv6 effective target checks
      	and options.
      
      From-SVN: r256782
      Kyrylo Tkachov committed
    • 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 19 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