1. 18 Dec, 2018 1 commit
  2. 17 Dec, 2018 22 commits
    • PR libstdc++/71044 fix off-by-one errors introduced recently · 2017595d
      The recent changes to append/concat directly from strings (without
      constructing paths) introduced regressions where one of the components
      could be omitted from the iteration sequence in the result.
      
      	PR libstdc++/71044
      	* src/filesystem/std-path.cc (path::_M_append): Fix off-by-one error
      	that caused a component to be lost from the iteration sequence.
      	(path::_M_concat): Likewise.
      	* testsuite/27_io/filesystem/path/append/source.cc: Test appending
      	long strings.
      	* testsuite/27_io/filesystem/path/concat/strings.cc: Test
      	concatenating long strings.
      	* testsuite/27_io/filesystem/path/construct/string_view.cc: Test
      	construction from long string.
      
      From-SVN: r267222
      Jonathan Wakely committed
    • re PR target/87870 (ppc64le generates poor code when loading constants into TImode vars) · 00fd0628
      gcc/
      	PR target/87870
      	* config/rs6000/vsx.md (nW): New mode iterator.
      	(vsx_mov<mode>_64bit): Use it.  Remove redundant GPR 0/-1 alternative.
      	Update length attribute for (<??r>, <nW>)  alternative.
      	(vsx_mov<mode>_32bit): Likewise.
      
      gcc/testsuite/
      	PR target/87870
      	* gcc.target/powerpc/pr87870.c: New test.
      
      From-SVN: r267221
      Peter Bergner committed
    • re PR c++/88410 (internal compiler error: output_operand: invalid expression as operand) · 1e9d6923
      	PR c++/88410
      	* cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding,
      	call maybe_constant_value on val to see if it is INTEGER_CST.
      
      	* g++.dg/cpp0x/pr88410.C: New test.
      
      From-SVN: r267220
      Jakub Jelinek committed
    • PR c++/52321 print note for static_cast to/from incomplete type · f4d458f3
      	PR c++/52321
      	* typeck.c (build_static_cast): Print a note when the destination
      	type or the operand is a pointer/reference to incomplete class type.
      
      From-SVN: r267219
      Jonathan Wakely committed
    • [nvptx] Move macro defs to top of nvptx.c · 693ad66b
      Move macro definition to the top of the file, allowing them to be used
      there-after.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2018-12-17  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH,
      	PTX_DEFAULT_RUNTIME_DIM): Move to the top of the file.
      
      From-SVN: r267216
      Tom de Vries committed
    • [nvptx] Add PTX_WARP_SIZE · 5d17a476
      Add PTX_WARP_SIZE constant and use it in nvptx_simt_vf.  The function
      nvptx_simt_vf is used for OpenMP, and using PTX_WARP_SIZE here decouples the
      OpenMP support from the PTX_VECTOR_LENGTH constant used in OpenACC support.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2018-12-17  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (PTX_WARP_SIZE): Define.
      	(nvptx_simt_vf): Return PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.
      
      From-SVN: r267215
      Tom de Vries committed
    • [nvptx] Fix whitespace in nvptx_single and nvptx_neuter_pars · 7820b298
      Fix whitespace in nvptx_single and nvptx_neuter_pars.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2018-12-17  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (nvptx_single): Fix whitespace.
      	(nvptx_neuter_pars): Likewise.
      
      From-SVN: r267214
      Tom de Vries committed
    • [nvptx] Unify C/Fortran routine handling in nvptx_goacc_validate_dims · 207e7fea
      The Fortran front-end has a bug (PR72741) that means what when
      nvptx_goacc_validate_dims is called for a Fortran routine, the dims parameter
      is not the same as it would have been if the function would have been called for
      an equivalent C routine.
      
      Work around this bug by overriding the dims parameter for routines, allowing the
      function to handle routines in Fortran and C the same.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2018-12-17  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Work around Fortran
      	bug PR72741 by overriding dims parameter for routines.
      
      From-SVN: r267213
      Tom de Vries committed
    • [nvptx] Rewrite nvptx_goacc_validate_dims to use predicate vars · ec6c865c
      The function nvptx_goacc_validate_dims has arguments decl and fn_level which
      together describe different situations.
      
      Introduce a predicate var for each situation, and use them, allowing to
      understand what the function does in each situation without having to know the
      way the situations are encoded in the args.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2018-12-17  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Rewrite using
      	predicate vars.
      
      From-SVN: r267212
      Tom de Vries committed
    • Add missing ChangeLog entry from last checkin: · c764b12c
      2018-12-17  Steve Ellcey  <sellcey@cavium.com>
      
      	* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
      	* gcc.target/aarch64/torture/simd-abi-1.c: New test.
      	* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.
      
      From-SVN: r267210
      Steve Ellcey committed
    • aarch64-torture.exp: New file. · ba1a78ff
      2018-12-17  Steve Ellcey  <sellcey@cavium.com>
      
      	* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
      	* gcc.target/aarch64/torture/simd-abi-1.c: New test.
      	* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
      	* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.
      
      From-SVN: r267209
      Steve Ellcey committed
    • aarch64-protos.h (aarch64_use_simple_return_insn_p): New prototype. · a0d0b980
      2018-12-17  Steve Ellcey  <sellcey@cavium.com>
      
      	* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
      	New prototype.
      	(aarch64_epilogue_uses): Ditto.
      	* config/aarch64/aarch64.c (aarch64_attribute_table): New array.
      	(aarch64_simd_decl_p): New function.
      	(aarch64_reg_save_mode): New function.
      	(aarch64_function_ok_for_sibcall): Check for simd calls.
      	(aarch64_layout_frame): Check for simd function.
      	(aarch64_gen_storewb_pair): Handle E_TFmode.
      	(aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
      	(aarch64_gen_loadwb_pair): Handle E_TFmode.
      	(aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
      	(aarch64_gen_store_pair): Handle E_TFmode.
      	(aarch64_gen_load_pair): Ditto.
      	(aarch64_save_callee_saves): Handle different mode sizes.
      	(aarch64_restore_callee_saves): Ditto.
      	(aarch64_components_for_bb): Check for simd function.
      	(aarch64_epilogue_uses): New function.
      	(aarch64_process_components): Check for simd function.
      	(aarch64_expand_prologue): Ditto.
      	(aarch64_expand_epilogue): Ditto.
      	(aarch64_expand_call): Ditto.
      	(aarch64_use_simple_return_insn_p): New function.
      	(TARGET_ATTRIBUTE_TABLE): New define.
      	* config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
      	(FP_SIMD_SAVED_REGNUM_P): New macro.
      	* config/aarch64/aarch64.md (simple_return): New define_expand.
      	(load_pair_dw_tftf): New instruction.
      	(store_pair_dw_tftf): Ditto.
      	(loadwb_pair<TX:mode>_<P:mode>): Ditto.
      	(storewb_pair<TX:mode>_<P:mode>): Ditto.
      
      From-SVN: r267208
      Steve Ellcey committed
    • Merge dmd upstream 237ca3fbe · 4d814b69
      Backports a fix where a bad cast to TypeFunction resulted in memory
      corruption.  The logic in the function semantic has been fixed, and
      casts have been replaced with a function call to always check the
      front-end AST node value.
      
      Reviewed-on: https://github.com/dlang/dmd/pull/9054
      
      From-SVN: r267207
      Iain Buclaw committed
    • builtin-snprintf-4.c: Adjust for ILP32. · 22b04f05
      gcc/testsuite/ChangeLog:
      	* gcc.dg/tree-ssa/builtin-snprintf-4.c: Adjust for ILP32.
      
      From-SVN: r267206
      Martin Sebor committed
    • re PR target/88502 (Inline built-in asinh, acosh, atanh for -ffast-math) · a81037ce
      	PR target/88502
      	* internal-fn.def (ACOSH): New.
      	(ASINH): Ditto.
      	(ATANH): Ditto.
      	* optabs.def (acosh_optab): New.
      	(asinh_optab): Ditto.
      	(atanh_optab): Ditto.
      	* config/i386/i386-protos.h (ix86_emit_i387_asinh): New prototype.
      	(ix86_emit_i387_acosh): Ditto.
      	(ix86_emit_i387_atanh): Ditto.
      	* config/i386/i386.c (ix86_emit_i387_asinh): New function.
      	(ix86_emit_i387_acosh): Ditto.
      	(ix86_emit_i387_atanh): Ditto.
      	* config/i386/i386.md (asinhxf2): New expander.
      	(asinh<mode>2):	Ditto.
      	(acoshxf2): Ditto.
      	(acosh<mode>2): Ditto.
      	(atanhxf2): Ditto.
      	(atanh<mode>2): Ditto.
      
      From-SVN: r267204
      Uros Bizjak committed
    • config.gcc (powerpc-ibm-aix6.*): Delete extra_headers. · 61c43d82
      * config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
      (powerpc-ibm-aix7.1.*): Same.
      (powerpc-ibm-aix[789].*): Same.
      
      From-SVN: r267203
      David Edelsohn committed
    • DWARF: Don't expand hash table when no insertion is needed · dc6b21cb
      dwarf2out_finish performs:
      
      1. save_macinfo_strings
      2. hash table traverse of index_string
      3. output_macinfo -> output_macinfo_op
      4. output_indirect_strings -> hash table traverse of output_index_string
      
      find_slot_with_hash has
      
       if (insert == INSERT && m_size * 3 <= m_n_elements * 4)
          expand ();
      
      which may expand hash table even if no insertion is neeed and change hash
      table traverse order.  When output_macinfo_op is called, all index strings
      have been added to hash table by save_macinfo_strings and we shouldn't
      expand index string hash table.  Otherwise find_slot_with_hash will expand
      hash table when hash table has the right size and hash table traverse of
      output_index_string will have a different traverse order from index_string.
      
      	PR debug/79342
      	* dwarf2out.c (find_AT_string_in_table): Add insert argument
      	defaulting to INSERT and replace INSERT.
      	(find_AT_string): Likewise.
      	(output_macinfo_op): Pass NO_INSERT to find_AT_string.
      
      From-SVN: r267202
      H.J. Lu committed
    • coverage.c (struct conts_entry): Add n_counts. · 0418f237
      
      	* coverage.c (struct conts_entry): Add n_counts.
      	(remap_counts_file): Record number of ocunts.
      	(get_coverage_counts): Verify that counts match.
      	* coverage.h (get_coverage_counts): Update prototype.
      	* profile.c (get_exec_counts. compute_value_histograms): Add
      	n_counts parametrs.
      
      From-SVN: r267200
      Jan Hubicka committed
    • re PR rtl-optimization/88253 (Inlining of function incorrectly deletes volatile… · d7c00826
      re PR rtl-optimization/88253 (Inlining of function incorrectly deletes volatile register access when using XOR in avr-gcc)
      
      Fix PR 88253
      
      gcc/ChangeLog:
      
      	PR rtl-optimization/88253
      	* combine.c (combine_simplify_rtx): Test for side-effects before
      	substituting by zero.
      
      gcc/testsuite/ChangeLog:
      
      	PR rtl-optimization/88253
      	* gcc.target/avr/pr88253.c: New test.
      
      From-SVN: r267198
      Senthil Kumar Selvaraj committed
    • Add a loop versioning pass · 13e08dc9
      This patch adds a pass that versions loops with variable index strides
      for the case in which the stride is 1.  E.g.:
      
          for (int i = 0; i < n; ++i)
            x[i * stride] = ...;
      
      becomes:
      
          if (stepx == 1)
            for (int i = 0; i < n; ++i)
              x[i] = ...;
          else
            for (int i = 0; i < n; ++i)
              x[i * stride] = ...;
      
      This is useful for both vector code and scalar code, and in some cases
      can enable further optimisations like loop interchange or pattern
      recognition.
      
      The pass gives a 7.6% improvement on Cortex-A72 for 554.roms_r at -O3
      and a 2.4% improvement for 465.tonto.  I haven't found any SPEC tests
      that regress.
      
      Sizewise, there's a 10% increase in .text for both 554.roms_r and
      465.tonto.  That's obviously a lot, but in tonto's case it's because
      the whole program is written using assumed-shape arrays and pointers,
      so a large number of functions really do benefit from versioning.
      roms likewise makes heavy use of assumed-shape arrays, and that
      improvement in performance IMO justifies the code growth.
      
      The next biggest .text increase is 4.5% for 548.exchange2_r.  I did see
      a small (0.4%) speed improvement there, but although both 3-iteration runs
      produced stable results, that might still be noise.  There was a slightly
      larger (non-noise) improvement for a 256-bit SVE model.
      
      481.wrf and 521.wrf_r .text grew by 2.8% and 2.5% respectively, but
      without any noticeable improvement in performance.  No other test grew
      by more than 2%.
      
      Although the main SPEC beneficiaries are all Fortran tests, the
      benchmarks we use for SVE also include some C and C++ tests that
      benefit.
      
      Using -frepack-arrays gives the same benefits in many Fortran cases.
      The problem is that using that option inappropriately can force a full
      array copy for arguments that the function only reads once, and so it
      isn't really something we can turn on by default.  The new pass is
      supposed to give most of the benefits of -frepack-arrays without
      the risk of unnecessary repacking.
      
      The patch therefore enables the pass by default at -O3.
      
      2018-12-17  Richard Sandiford  <richard.sandiford@arm.com>
      	    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
      	    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
      
      gcc/
      	* doc/invoke.texi (-fversion-loops-for-strides): Document
      	(loop-versioning-group-size, loop-versioning-max-inner-insns)
      	(loop-versioning-max-outer-insns): Document new --params.
      	* Makefile.in (OBJS): Add gimple-loop-versioning.o.
      	* common.opt (fversion-loops-for-strides): New option.
      	* opts.c (default_options_table): Enable fversion-loops-for-strides
      	at -O3.
      	* params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE)
      	(PARAM_LOOP_VERSIONING_MAX_INNER_INSNS)
      	(PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters.
      	* passes.def: Add pass_loop_versioning.
      	* timevar.def (TV_LOOP_VERSIONING): New time variable.
      	* tree-ssa-propagate.h
      	(substitute_and_fold_engine::substitute_and_fold): Add an optional
      	block parameter.
      	* tree-ssa-propagate.c
      	(substitute_and_fold_engine::substitute_and_fold): Likewise.
      	When passed, only walk blocks dominated by that block.
      	* tree-vrp.h (range_includes_p): Declare.
      	(range_includes_zero_p): Turn into an inline wrapper around
      	range_includes_p.
      	* tree-vrp.c (range_includes_p): New function, generalizing...
      	(range_includes_zero_p): ...this.
      	* tree-pass.h (make_pass_loop_versioning): Declare.
      	* gimple-loop-versioning.cc: New file.
      
      gcc/testsuite/
      	* gcc.dg/loop-versioning-1.c: New test.
      	* gcc.dg/loop-versioning-10.c: Likewise.
      	* gcc.dg/loop-versioning-11.c: Likewise.
      	* gcc.dg/loop-versioning-2.c: Likewise.
      	* gcc.dg/loop-versioning-3.c: Likewise.
      	* gcc.dg/loop-versioning-4.c: Likewise.
      	* gcc.dg/loop-versioning-5.c: Likewise.
      	* gcc.dg/loop-versioning-6.c: Likewise.
      	* gcc.dg/loop-versioning-7.c: Likewise.
      	* gcc.dg/loop-versioning-8.c: Likewise.
      	* gcc.dg/loop-versioning-9.c: Likewise.
      	* gfortran.dg/loop_versioning_1.f90: Likewise.
      	* gfortran.dg/loop_versioning_2.f90: Likewise.
      	* gfortran.dg/loop_versioning_3.f90: Likewise.
      	* gfortran.dg/loop_versioning_4.f90: Likewise.
      	* gfortran.dg/loop_versioning_5.f90: Likewise.
      	* gfortran.dg/loop_versioning_6.f90: Likewise.
      	* gfortran.dg/loop_versioning_7.f90: Likewise.
      	* gfortran.dg/loop_versioning_8.f90: Likewise.
      
      From-SVN: r267197
      Richard Sandiford committed
    • re PR fortran/85314 (gcc/fortran/resolve.c:9222: unreachable code ?) · fb2974dc
      2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/85314
      	* resolve.c (resolve_transfer): Remove dead code.
      
      From-SVN: r267196
      Steven G. Kargl committed
    • Daily bump. · 25f51c73
      From-SVN: r267195
      GCC Administrator committed
  3. 16 Dec, 2018 9 commits
  4. 15 Dec, 2018 8 commits
    • re PR c++/88482 (ICE when wrongly declaring __cxa_allocate_exception) · 784417d1
      	PR c++/88482
      	* except.c (verify_library_fn): New function.
      	(declare_library_fn): Use it.  Initialize TM even if the non-TM
      	library function has been user declared.
      	(do_end_catch): Don't set TREE_NOTHROW on error_mark_node.
      	(expand_start_catch_block): Don't call initialize_handler_parm
      	for error_mark_node.
      	(build_throw): Use verify_library_fn.  Initialize TM even if the
      	non-TM library function has been user declared.  Don't crash if
      	any library fn is error_mark_node.
      
      	* g++.dg/eh/builtin5.C: New test.
      	* g++.dg/eh/builtin6.C: New test.
      	* g++.dg/eh/builtin7.C: New test.
      	* g++.dg/eh/builtin8.C: New test.
      	* g++.dg/eh/builtin9.C: New test.
      	* g++.dg/eh/builtin10.C: New test.
      	* g++.dg/eh/builtin11.C: New test.
      	* g++.dg/parse/crash55.C: Adjust expected diagnostics.
      
      	* eh_cpp.cc (__cxa_throw): Change DEST argument type from
      	void * to void (*) (void *).
      	(_ITM_cxa_throw): Likewise.
      	* libitm.h (_ITM_cxa_throw): Likewise.
      	* libitm.texi (_ITM_cxa_throw): Likewise.
      
      From-SVN: r267179
      Jakub Jelinek committed
    • re PR fortran/88138 (ICE in gfc_arith_concat, at fortran/arith.c:1007) · e310b381
      2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/88138
      	* decl.c (variable_decl): Check that a derived isn't being assigned
      	an incompatible entity in an initialization.
       
      2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/88138
      	* gfortran.dg/pr88138.f90: new test.
      
      From-SVN: r267177
      Steven G. Kargl committed
    • Small lambda instantiation tweak. · 54d04ce9
      While looking at something else I noticed that we were passing 0 to the
      "nonclass" parameter here; we might as well pass 1, since capture proxies
      are always at block scope.
      
      	* pt.c (tsubst_expr) [DECL_EXPR]: Ignore class-scope bindings when
      	looking up a capture proxy.
      
      From-SVN: r267176
      Jason Merrill committed
    • cgraph.h (cgraph_node): Add predicate prevailing_p. · f714ecf5
      
      	* cgraph.h (cgraph_node): Add predicate prevailing_p.
      	(cgraph_edge): Add predicate possible_call_in_translation_unit_p.
      	* ipa-prop.c (ipa_write_jump_function): Optimize streaming of ADDR_EXPR.
      	(ipa_read_jump_function): Add prevails parameter; optimize streaming.
      	(ipa_read_edge_info): Break out from ...
      	(ipa_read_node_info): ... here; optimize streaming.
      	* cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): New
      	predicate.
      
      From-SVN: r267175
      Jan Hubicka committed
    • ipa-utils.c (ipa_merge_profiles): Do no merging when source function has zero count. · 6263c29d
      
      	* ipa-utils.c (ipa_merge_profiles): Do no merging when source function
      	has zero count.
      
      From-SVN: r267174
      Jan Hubicka committed
    • re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing… · 305f1fb7
      re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")
      
      	PR tree-optimization/88464
      	PR target/88498
      	* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
      	and mask with integral masktype, don't try to permute mask vectors,
      	instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
      	(vectorizable_store): Handle masked scatters with decl and integral
      	mask type.
      	(permute_vec_elements): Allow scalar_dest to be NULL.
      	* config/i386/i386.c (ix86_get_builtin)
      	<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
      	<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
      	to be the same.
      
      	* gcc.target/i386/avx512f-pr88462-1.c: Rename to ...
      	* gcc.target/i386/avx512f-pr88464-1.c: ... this.  Fix up PR number.
      	Expect 4 vectorized loops instead of 3.
      	(f4): New function.
      	* gcc.target/i386/avx512f-pr88462-2.c: Rename to ...
      	* gcc.target/i386/avx512f-pr88464-2.c: ... this.  Fix up PR number
      	and #include.
      	(avx512f_test): Prepare arguments for f4 and check the results.
      	* gcc.target/i386/avx512f-pr88464-3.c: New test.
      	* gcc.target/i386/avx512f-pr88464-4.c: New test.
      
      From-SVN: r267170
      Jakub Jelinek committed
    • re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing… · b1985ca0
      re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")
      
      	PR tree-optimization/88464
      	PR target/88498
      	* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
      	and mask with integral masktype, don't try to permute mask vectors,
      	instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
      	(vectorizable_store): Handle masked scatters with decl and integral
      	mask type.
      	(permute_vec_elements): Allow scalar_dest to be NULL.
      	* config/i386/i386.c (ix86_get_builtin)
      	<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
      	<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
      	to be the same.
      
      	* gcc.target/i386/avx512f-pr88462-1.c: Rename to ...
      	* gcc.target/i386/avx512f-pr88464-1.c: ... this.  Fix up PR number.
      	Expect 4 vectorized loops instead of 3.
      	(f4): New function.
      	* gcc.target/i386/avx512f-pr88462-2.c: Rename to ...
      	* gcc.target/i386/avx512f-pr88464-2.c: ... this.  Fix up PR number
      	and #include.
      	(avx512f_test): Prepare arguments for f4 and check the results.
      	* gcc.target/i386/avx512f-pr88464-3.c: New test.
      	* gcc.target/i386/avx512f-pr88464-4.c: New test.
      
      From-SVN: r267169
      Jakub Jelinek committed
    • ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET parameters. · ee34ebba
      
      	* ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
      	parameters.
      	(cgraph_build_static_cdtor): Update.
      	(build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
      	callsed.
      
      From-SVN: r267168
      Jan Hubicka committed