1. 23 Oct, 2017 15 commits
    • common.opt (gcolumn-info): Enable by default. · 8008dd1c
      	* common.opt (gcolumn-info): Enable by default.
      	* doc/invoke.texi (gcolumn-info): Document new default.
      
      	* lib/scanasm.exp (dg-function-on-line): Accept optional column info.
      	* gcc.dg/debug/dwarf2/pr53948.c: Likewise.
      	* g++.dg/debug/dwarf2/pr77363.C: Likewise.
      	* gcc.dg/debug/dwarf2/asm-line1.c: Add -gno-column-info to dg-options.
      	* gcc.dg/debug/dwarf2/discriminator.c: Likewise.
      	* g++.dg/debug/dwarf2/typedef6.C: Likewise.
      
      From-SVN: r254010
      Jakub Jelinek committed
    • re PR tree-optimization/82672 ([GRAPHITE] ICE in verify_gimple_in_cfg) · ee76c2f9
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82672
      	* graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
      	Fold the stmt if we propagated into it.
      
      	* gfortran.dg/graphite/pr82672.f90: New testcase.
      
      From-SVN: r254009
      Richard Biener committed
    • Implement C++17 Filesystem library · 641cb5a6
      Based on Filesystem TS implementation, with the changes applied by:
      
      - P0219R1 Relative Paths for Filesystem
      - P0317R1 Directory Entry Caching for Filesystem
      - P0492R2 Resolution of C++17 National Body Comments
      
      Where appropriate code is shared between the TS and C++17
      implementations.
      
      	* include/Makefile.am: Add new headers for C++17 filesystem library.
      	* include/Makefile.in: Regenerate.
      	* include/bits/fs_dir.h: New header, based on Filesystem TS code in
      	include/experimental/bits directory.
      	* include/bits/fs_fwd.h: Likewise.
      	* include/bits/fs_ops.h: Likewise.
      	* include/bits/fs_path.h: Likewise.
      	* include/experimental/bits/fs_dir.h: Rename Doxygen group.
      	* include/experimental/bits/fs_fwd.h: Likewise.
      	* include/experimental/bits/fs_ops.h: Likewise.
      	* include/experimental/bits/fs_path.h: Likewise.
      	* include/experimental/filesystem (filesystem_error::_M_gen_what):
      	Remove inline definition.
      	* include/precompiled/stdc++.h: Add <filesystem> to precompiled
      	header.
      	* include/std/filesystem: New header.
      	* python/libstdcxx/v6/printers.py: Enable printer for std::filesystem
      	paths.
      	* src/filesystem/Makefile.am: Add new files. Compile as C++17.
      	* src/filesystem/Makefile.in: Regenerate.
      	* src/filesystem/cow-dir.cc: Update comment.
      	* src/filesystem/cow-ops.cc: Likewise.
      	* src/filesystem/cow-path.cc: Likewise.
      	* src/filesystem/cow-std-dir.cc: New file.
      	* src/filesystem/cow-std-ops.cc: New file.
      	* src/filesystem/cow-std-path.cc: New file.
      	* src/filesystem/dir-common.h (_Dir_base, get_file_type): New header
      	for common code.
      	* src/filesystem/dir.cc (_Dir): Derive from _Dir_base.
      	(open_dir): Move to _Dir_base constructor.
      	(get_file_type): Move to dir-common.h.
      	(recurse): Move to _Dir_base::should_recurse.
      	* src/filesystem/ops-common.h: New header for common code.
      	* src/filesystem/ops.cc (is_set, make_file_type, make_file_status)
      	(is_not_found_errno, file_time, do_copy_file): Move to ops-common.h.
      	* src/filesystem/path.cc (filesystem_error::_M_gen_what): Define.
      	* src/filesystem/std-dir.cc: New file, based on Filesystem TS code.
      	* src/filesystem/std-ops.cc: Likewise.
      	* src/filesystem/std-dir.cc: Likewise.
      	* testsuite/27_io/filesystem/iterators/directory_iterator.cc: New
      	test.
      	* testsuite/27_io/filesystem/iterators/pop.cc: New test.
      	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
      	New test.
      	* testsuite/27_io/filesystem/operations/absolute.cc: New test.
      	* testsuite/27_io/filesystem/operations/canonical.cc: New test.
      	* testsuite/27_io/filesystem/operations/copy.cc: New test.
      	* testsuite/27_io/filesystem/operations/copy_file.cc: New test.
      	* testsuite/27_io/filesystem/operations/create_directories.cc: New
      	test.
      	* testsuite/27_io/filesystem/operations/create_directory.cc: New test.
      	* testsuite/27_io/filesystem/operations/create_symlink.cc: New test.
      	* testsuite/27_io/filesystem/operations/current_path.cc: New test.
      	* testsuite/27_io/filesystem/operations/equivalent.cc: New test.
      	* testsuite/27_io/filesystem/operations/exists.cc: New test.
      	* testsuite/27_io/filesystem/operations/file_size.cc: New test.
      	* testsuite/27_io/filesystem/operations/is_empty.cc: New test.
      	* testsuite/27_io/filesystem/operations/last_write_time.cc: New test.
      	* testsuite/27_io/filesystem/operations/permissions.cc: New test.
      	* testsuite/27_io/filesystem/operations/proximate.cc: New test.
      	* testsuite/27_io/filesystem/operations/read_symlink.cc: New test.
      	* testsuite/27_io/filesystem/operations/relative.cc: New test.
      	* testsuite/27_io/filesystem/operations/remove_all.cc: New test.
      	* testsuite/27_io/filesystem/operations/space.cc: New test.
      	* testsuite/27_io/filesystem/operations/status.cc: New test.
      	* testsuite/27_io/filesystem/operations/symlink_status.cc: New test.
      	* testsuite/27_io/filesystem/operations/temp_directory_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/operations/weakly_canonical.cc: New test.
      	* testsuite/27_io/filesystem/path/append/path.cc: New test.
      	* testsuite/27_io/filesystem/path/assign/assign.cc: New test.
      	* testsuite/27_io/filesystem/path/assign/copy.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/compare.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/path.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/strings.cc: New test.
      	* testsuite/27_io/filesystem/path/concat/path.cc: New test.
      	* testsuite/27_io/filesystem/path/concat/strings.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/copy.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/default.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/locale.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/range.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/string_view.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/extension.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/filename.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/parent_path.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/relative_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/decompose/root_directory.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/decompose/root_name.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/root_path.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/stem.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/normal.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/proximate.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/relative.cc: New test.
      	* testsuite/27_io/filesystem/path/generic/generic_string.cc: New test.
      	* testsuite/27_io/filesystem/path/itr/traversal.cc: New test.
      	* testsuite/27_io/filesystem/path/modifiers/clear.cc: New test.
      	* testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/swap.cc: New test.
      	* testsuite/27_io/filesystem/path/native/string.cc: New test.
      	* testsuite/27_io/filesystem/path/nonmember/hash_value.cc: New test.
      	* testsuite/27_io/filesystem/path/query/empty.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_extension.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_filename.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_parent_path.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_relative_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/query/has_root_directory.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/query/has_root_name.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_root_path.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_stem.cc: New test.
      	* testsuite/27_io/filesystem/path/query/is_relative.cc: New test.
      	* testsuite/experimental/filesystem/path/construct/string_view.cc:
      	Define USE_FILESYSTEM_TS.
      	* testsuite/util/testsuite_fs.h: Allow use with C++17 paths as well
      	as Filesystem TS.
      
      From-SVN: r254008
      Jonathan Wakely committed
    • tree-ssa-pre.c (bitmap_remove_from_set): Rename to... · 9c71c00f
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
      	(bitmap_remove_expr_from_set): ... this.  All callers call this
      	for non-constant values.
      	(bitmap_set_subtract): Rename to...
      	(bitmap_set_subtract_expressions): ... this.  Adjust and
      	optimize.
      	(bitmap_set_contains_value): Remove superfluous check.
      	(bitmap_set_replace_value): Inline into single caller ...
      	(bitmap_value_replace_in_set): ... here and simplify.
      	(dependent_clean): Merge into ...
      	(clean): ... this using an overload.  Adjust.
      	(prune_clobbered_mems): Adjust.
      	(compute_antic_aux): Likewise.
      	(compute_partial_antic_aux): Likewise.
      
      From-SVN: r254007
      Richard Biener committed
    • re PR c++/77555 (unused inline function in-function static variable accessed… · 2de9164b
      re PR c++/77555 (unused inline function in-function static variable accessed from outside leads to linker error)
      
      2017-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/77555
      	* g++.dg/torture/pr77555.C: New.
      
      From-SVN: r254006
      Paolo Carlini committed
    • re PR tree-optimization/82129 (ICE in compute_antic, at tree-ssa-pre.c:2447) · 0524367e
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82129
      	Revert
      	2017-08-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81181
      	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
      	(compute_antic): ... end of iteration here.
      
      From-SVN: r254005
      Richard Biener committed
    • PR libstdc++/82644 document IS 29124 support · 908d1d3a
      Also fix declarations of special functions in C++17, to import them into
      the global namespace in <math.h>, and to prevent defining the
      non-standard hypergeometric functions in strict mode.
      
      	PR libstdc++/82644
      	* doc/xml/manual/intro.xml: Include new section.
      	* doc/xml/manual/status_cxxis29124.xml: New section on IS 29124
      	status.
      	* include/bits/specfun.h [__STRICT_ANSI__] (hyperg, hypergf, hypergl)
      	(conf_hyperg, conf_hypergf, conf_hypergl): Don't declare.
      	* include/c_compatibility/math.h: Import special functions into
      	global namespace for C++17.
      	* testsuite/26_numerics/headers/cmath/82644.cc: New test.
      	* testsuite/26_numerics/headers/cmath/functions_global_c++17.cc: New
      	test.
      
      From-SVN: r254004
      Jonathan Wakely committed
    • Convert STARTING_FRAME_OFFSET to a hook · 2a31c321
      I took the documentation of the FRAME_GROWS_DOWNWARD behaviour from the
      version that was in most header files, since the one in the manual seemed
      less clear.
      
      The patch deliberately keeps FIRST_PARM_OFFSET(FNDECL) in
      microblaze_starting_frame_offset; this seems to be a port-local
      convention and takes advantage of the fact that FIRST_PARM_OFFSET
      doesn't read FNDECL.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* target.def (starting_frame_offset): New hook.
      	* doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
      	(TARGET_STARTING_FRAME_OFFSET): ...this new hook.
      	* doc/tm.texi.in: Regenerate.
      	* hooks.h (hook_hwi_void_0): Declare.
      	* hooks.c (hook_hwi_void_0): New function.
      	* doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
      	STARTING_FRAME_OFFSET.
      	* builtins.c (expand_builtin_setjmp_receiver): Likewise.
      	* reload1.c (reload): Likewise.
      	* cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
      	instead of STARTING_FRAME_OFFSET.
      	* function.c (try_fit_stack_local): Likewise.
      	(assign_stack_local_1): Likewise
      	(instantiate_virtual_regs): Likewise.
      	* rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
      	* config/avr/avr.md (nonlocal_goto_receiver): Likewise.
      	* config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
      	* config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
      	* config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
      	* config/avr/avr.c (avr_starting_frame_offset): Make static and
      	return a HOST_WIDE_INT.
      	(avr_builtin_setjmp_frame_value): Use it instead of
      	STARTING_FRAME_OFFSET.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
      	* config/epiphany/epiphany.c (epiphany_starting_frame_offset):
      	New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
      	* config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
      	(TARGET_CONSTANT_ALIGNMENT): Redefine.
      	* config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
      	* config/lm32/lm32.c (lm32_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
      	* config/m32r/m32r.c (m32r_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
      	* config/microblaze/microblaze.c (microblaze_starting_frame_offset):
      	New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
      	* config/mips/mips.c (mips_compute_frame_info): Refer to
      	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
      	(mips_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
      	* config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
      	* config/mmix/mmix.c (mmix_starting_frame_offset): Make static
      	and return a HOST_WIDE_INT.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	(mmix_initial_elimination_offset): Refer to
      	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
      	* config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
      	* config/pa/pa.c (pa_starting_frame_offset): New function.
      	(pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
      	(pa_expand_prologue): Likewise.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
      	Redefine.
      	(rs6000_starting_frame_offset): New function.
      	* config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
      	(rs6000_starting_frame_offset): New function.
      	* config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
      	* config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
      	* config/vax/vax.c (vax_starting_frame_offset): New function.
      	(vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
      	* config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* system.h (STARTING_FRAME_OFFSET): Poison.
      
      From-SVN: r254003
      Richard Sandiford committed
    • Use SCALAR_TYPE_MODE in vect_create_epilog_for_reduction · 3ec43c5e
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
      	SCALAR_TYPE_MODE instead of TYPE_MODE.
      
      From-SVN: r254002
      Richard Sandiford committed
    • Use SCALAR_INT_TYPE_MODE in loc_list_from_tree_1 · 1fc50bea
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254001
      Richard Sandiford committed
    • Use scalar_int/float_mode in brig_langhook_type_for_mode · 4603941e
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/brig/
      	* brig-lang.c (brig_langhook_type_for_mode): Use scalar_int_mode
      	and scalar_float_mode.
      
      From-SVN: r254000
      Richard Sandiford committed
    • Use scalar_mode in expand_shift_1 · a85cf8e9
      Since this function handles scalar and vector shifts:
      
        machine_mode scalar_mode = mode;
        if (VECTOR_MODE_P (mode))
          scalar_mode = GET_MODE_INNER (mode);
      
      is equivalent to:
      
        scalar_mode = GET_MODE_INNER (mode);
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253999
      Richard Sandiford committed
    • re PR tree-optimization/82129 (ICE in compute_antic, at tree-ssa-pre.c:2447) · eb0e98f8
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82129
      	* tree-ssa-pre.c (bitmap_set_and): Remove.
      	(compute_antic_aux): Compute ANTIC_OUT intersection in a way
      	canonicalizing expressions in the set to those with lowest
      	ID rather than taking that from the first edge.
      
      	* gcc.dg/torture/pr82129.c: New testcase.
      
      From-SVN: r253998
      Richard Biener committed
    • Fix HWI + -unsigned in combine.c · 735d873d
      rtx_equal_for_field_assignment_p had:
      
       	x = adjust_address_nv (x, GET_MODE (y),
      			       -subreg_lowpart_offset (GET_MODE (x),
      						       GET_MODE (y)));
      
      But subreg_lowpart_offset returns an unsigned int and
      adjust_address_nv takes a HWI, so a subreg offset of 4 would
      give a memory offset of 0x00000000fffffffffc.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* combine.c (rtx_equal_for_field_assignment_p): Use
      	byte_lowpart_offset.
      
      From-SVN: r253997
      Richard Sandiford committed
    • Daily bump. · 431c4417
      From-SVN: r253996
      GCC Administrator committed
  2. 22 Oct, 2017 11 commits
    • i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost latencies… · f802eb66
      i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost latencies instead of having separate table...
      
      
      	* i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
      	latencies instead of having separate table; make difference between
      	integer and float costs.
      	* i386.h (processor_costs): Remove scalar_stmt_cost,
      	scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
      	scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
      	vec_store_cost.
      	* x86-tune-costs.h: Remove entries which has been removed in
      	procesor_costs from all tables; make cond_taken_branch_cost
      	and cond_not_taken_branch_cost COST_N_INSNS based.
      
      From-SVN: r253993
      Jan Hubicka committed
    • SUBREG_PROMOTED_VAR_P handling in expand_direct_optab_fn · b7753f75
      This is needed by the later SVE LAST reductions, where an 8-bit
      or 16-bit result is zero- rather than sign-extended to 32 bits.
      I think it could occur in other situations too.
      
      2017-09-19  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* internal-fn.c (expand_direct_optab_fn): Don't assign directly
      	to a SUBREG_PROMOTED_VAR.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253992
      Richard Sandiford committed
    • Make more use of GET_MODE_UNIT_PRECISION · bb06a2d8
      This patch is like the earlier GET_MODE_UNIT_SIZE one,
      but for precisions rather than sizes.  There is one behavioural
      change in expand_debug_expr: we shouldn't use lowpart subregs
      for non-scalar truncations, since that would just reinterpret
      some of the scalars and drop the rest.  (This probably doesn't
      trigger in practice.)  Using TRUNCATE is fine for scalars,
      since simplify_gen_unary knows when a subreg can be used.
      
      2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
      	(expand_debug_source_expr): Likewise.
      	* combine.c (combine_simplify_rtx): Likewise.
      	* cse.c (fold_rtx): Likewise.
      	* optabs.c (expand_float): Likewise.
      	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
      	(simplify_binary_operation_1): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253991
      Richard Sandiford committed
    • Make more use of HWI_COMPUTABLE_MODE_P · 1e3734f5
      This patch uses HWI_COMPUTABLE_MODE_P (X) instead of
      GET_MODE_PRECISION (X) <= HOST_BITS_PER_WIDE_INT in cases
      where X also needs to be a scalar integer.
      
      2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
      	(record_promoted_value): Likewise.
      	* expr.c (expand_expr_real_2): Likewise.
      	* ree.c (update_reg_equal_equiv_notes): Likewise.
      	(combine_set_extension): Likewise.
      	* rtlanal.c (low_bitmask_len): Likewise.
      	* simplify-rtx.c (neg_const_int): Likewise.
      	(simplify_binary_operation_1): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253990
      Richard Sandiford committed
    • Make more use of subreg_size_lowpart_offset · e10326ff
      This patch uses subreg_size_lowpart_offset in places that open-coded
      the calculation.  The reload use (and the LRA one that was based on it)
      seemed to ignore the BYTES_BIG_ENDIAN != WORDS_BIG_ENDIAN case; it's not
      obvious whether that was deliberate or an oversight.
      
      2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
      	* regcprop.c (maybe_mode_change): Likewise.
      	* reload1.c (alter_reg): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253989
      Richard Sandiford committed
    • Add wide_int version of inchash::hash::add_wide_int · cae115d6
      This patch adds an inchash hasher for wide_int-based types.
      It means that hash_tree no longer hashes TREE_INT_CST_EXT_NUNITS,
      but that was redundant with hashing the type.
      
      2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* inchash.h (inchash::hash::add_wide_int): New function.
      	* lto-streamer-out.c (hash_tree): Use it.
      
      From-SVN: r253988
      Richard Sandiford committed
    • Rename inchash::hash::add_wide_int · 449e9a33
      The name inchash::add_wide_int is a bit misleading, since it sounds
      like it's hashing a wide_int.  This patch renames it to add_hwi instead.
      
      2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* inchash.h (inchash::hash::add_wide_int): Rename to...
      	(inchash::hash::add_hwi): ...this.
      	* ipa-devirt.c (hash_odr_vtable): Update accordingly.
      	(polymorphic_call_target_hasher::hash): Likewise.
      	* ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
      	(sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
      	(sem_item_optimizer::update_hash_by_addr_refs): Likewise.
      	* lto-streamer-out.c (hash_tree): Likewise.
      	* optc-save-gen.awk: Likewise.
      	* tree.c (add_expr): Likewise.
      
      From-SVN: r253987
      Richard Sandiford committed
    • re PR target/52451 (gcc w/i387 float generates fucom rather than fcom for… · ef1e3836
      re PR target/52451 (gcc w/i387 float generates fucom rather than fcom for floating point comparsons)
      
      	PR target/52451
      	* config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
      	for ordered inequality comparisons even with TARGET_IEEE_FP.
      
      testsuite/ChangeLog:
      
      	PR target/52451
      	* gcc.dg/torture/pr52451.c: New test.
      
      From-SVN: r253986
      Uros Bizjak committed
    • re PR rtl-optimization/82628 (wrong code at -Os on x86_64-linux-gnu in the 32-bit mode) · 8cc857f9
      	PR target/82628
      	* config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
      	* config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
      	Expand with cmp<dwi>_doubleword.
      
      testsuite/ChangeLog:
      
      	PR target/82628
      	* gcc.dg/torture/pr82628.c: New test.
      
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r253985
      Uros Bizjak committed
    • Move 2 tests from c-c++-common/ to gcc.target/i386/ directory. · 00c378a9
      	* c-c++-common/attr-nocf-check-1a.c: Remove test.
      	* c-c++-common/attr-nocf-check-3a.c: Likewise.
      	* gcc.target/i386/attr-nocf-check-1a.c: Add test.
      	* gcc.target/i386/attr-nocf-check-3a.c: Likewise.
      
      From-SVN: r253984
      Igor Tsimbalist committed
    • Daily bump. · 77a657bf
      From-SVN: r253982
      GCC Administrator committed
  3. 21 Oct, 2017 11 commits
    • Add x86 tests for Intel CET implementation. · 9ae222ad
      gcc/testsuite/
      
      	* c-c++-common/attr-nocf-check-1.c: Shorten a cheking message.
      	* c-c++-common/attr-nocf-check-3.c: Likewise.
      	* c-c++-common/fcf-protection-1.c: Add x86 specific message.
      	* c-c++-common/fcf-protection-2.c: Likewise.
      	* c-c++-common/fcf-protection-3.c: Likewise.
      	* c-c++-common/fcf-protection-5.c: Likewise.
      	* c-c++-common/attr-nocf-check-1a.c: New test.
      	* c-c++-common/attr-nocf-check-3a.c: Likewise.
      	* g++.dg/cet-notrack-1.C: Likewise.
      	* gcc.target/i386/cet-intrin-1.c: Likewise.
      	* gcc.target/i386/cet-intrin-10.c: Likewise.
      	* gcc.target/i386/cet-intrin-2.c: Likewise.
      	* gcc.target/i386/cet-intrin-3.c: Likewise.
      	* gcc.target/i386/cet-intrin-4.c: Likewise.
      	* gcc.target/i386/cet-intrin-5.c: Likewise.
      	* gcc.target/i386/cet-intrin-6.c: Likewise.
      	* gcc.target/i386/cet-intrin-7.c: Likewise.
      	* gcc.target/i386/cet-intrin-8.c: Likewise.
      	* gcc.target/i386/cet-intrin-9.c: Likewise.
      	* gcc.target/i386/cet-label.c: Likewise.
      	* gcc.target/i386/cet-notrack-1a.c: Likewise.
      	* gcc.target/i386/cet-notrack-1b.c: Likewise.
      	* gcc.target/i386/cet-notrack-2a.c: Likewise.
      	* gcc.target/i386/cet-notrack-2b.c: Likewise.
      	* gcc.target/i386/cet-notrack-3.c: Likewise.
      	* gcc.target/i386/cet-notrack-4a.c: Likewise.
      	* gcc.target/i386/cet-notrack-4b.c: Likewise.
      	* gcc.target/i386/cet-notrack-5a.c: Likewise.
      	* gcc.target/i386/cet-notrack-5b.c: Likewise.
      	* gcc.target/i386/cet-notrack-6a.c: Likewise.
      	* gcc.target/i386/cet-notrack-6b.c: Likewise.
      	* gcc.target/i386/cet-notrack-7.c: Likewise.
      	* gcc.target/i386/cet-property-1.c: Likewise.
      	* gcc.target/i386/cet-property-2.c: Likewise.
      	* gcc.target/i386/cet-rdssp-1.c: Likewise.
      	* gcc.target/i386/cet-sjlj-1.c: Likewise.
      	* gcc.target/i386/cet-sjlj-2.c: Likewise.
      	* gcc.target/i386/cet-sjlj-3.c: Likewise.
      	* gcc.target/i386/cet-switch-1.c: Likewise.
      	* gcc.target/i386/cet-switch-2.c: Likewise.
      	* lib/target-supports.exp (check_effective_target_cet): New
      	proc.
      
      From-SVN: r253979
      Igor Tsimbalist committed
    • Add x86 CET documentation. · ccdf009d
      gcc/doc/
      	* extend.texi: Add x86 specific to 'nocf_check' attribute.
      	List CET intrinsics.
      	* invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
      	specific to -fcf-protection option.
      
      From-SVN: r253978
      Igor Tsimbalist committed
    • Update x86 backend to enable Intel CET. · 2a25448c
      All platforms except i386 will report the error and do no
      instrumentation with -finstrument-control-flow option. i386
      will provide the implementation based on a specification
      published by Intel for a new technology called Control-flow
      Enforcement Technology (CET). The spec is available at
      
      https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf
      
      The implementation in this patch:
      1) enables Control-flow Enforcement Technology (CET), published by
      Intel. This part introduces i386 specific options -mcet, -mibt and
      -mshstk, new instructions and intrinsics;
      
      2) provides support for -fcf-protection option and 'nocf_check'
      attribute by doing needed code instrumentation, which is based on
      CET features.
      
      gcc/
      
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
      	(OPTION_MASK_ISA_SHSTK_SET): Likewise.
      	(OPTION_MASK_ISA_IBT_UNSET): Likewise.
      	(OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
      	(ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
      	* config.gcc (extra_headers): Add cetintrin.h for x86 targets.
      	(extra_objs): Add cet.o for Linux/x86 targets.
      	(tmake_file): Add i386/t-cet for Linux/x86 targets.
      	* config/i386/cet.c: New file.
      	* config/i386/cetintrin.h: Likewise.
      	* config/i386/t-cet: Likewise.
      	* config/i386/cpuid.h (bit_SHSTK): New.
      	(bit_IBT): Likewise.
      	* config/i386/driver-i386.c (host_detect_local_cpu): Detect and
      	pass IBT and SHSTK bits.
      	* config/i386/i386-builtin-types.def
      	(VOID_FTYPE_UNSIGNED_PVOID): New.
      	(VOID_FTYPE_UINT64_PVOID): Likewise.
      	* config/i386/i386-builtin.def: Add CET intrinsics.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Add
      	OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
      	* config/i386/i386-passes.def: Add pass_insert_endbranch pass.
      	* config/i386/i386-protos.h (make_pass_insert_endbranch): New
      	prototype.
      	* config/i386/i386.c (rest_of_insert_endbranch): New.
      	(pass_data_insert_endbranch): Likewise.
      	(pass_insert_endbranch): Likewise.
      	(make_pass_insert_endbranch): Likewise.
      	(ix86_notrack_prefixed_insn_p): Likewise.
      	(ix86_target_string): Add -mibt, -mshstk flags.
      	(ix86_option_override_internal): Add flag_cf_protection
      	processing.
      	(ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
      	(ix86_print_operand): Add 'notrack' prefix output.
      	(ix86_init_mmx_sse_builtins): Add CET intrinsics.
      	(ix86_expand_builtin): Expand CET intrinsics.
      	(x86_output_mi_thunk): Add 'endbranch' instruction.
      	* config/i386/i386.h (TARGET_IBT): New.
      	(TARGET_IBT_P): Likewise.
      	(TARGET_SHSTK): Likewise.
      	(TARGET_SHSTK_P): Likewise.
      	   * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
      	UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
      	UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
      	(builtin_setjmp_setup): New pattern.
      	(builtin_longjmp): Likewise.
      	(rdssp<mode>): Likewise.
      	(incssp<mode>): Likewise.
      	(saveprevssp): Likewise.
      	(rstorssp): Likewise.
      	(wrss<mode>): Likewise.
      	(wruss<mode>): Likewise.
      	(setssbsy): Likewise.
      	(clrssbsy): Likewise.
      	(nop_endbr): Likewise.
      	* config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
      	options.
      	* config/i386/immintrin.h: Include <cetintrin.h>.
      	* config/i386/linux-common.h
      	(file_end_indicate_exec_stack_and_cet): New prototype.
      	(TARGET_ASM_FILE_END): New.
      
      From-SVN: r253977
      Igor Tsimbalist committed
    • pr79683.c: Disable costmodel. · f6fd8f2b
      
      	* gcc.target/i386/pr79683.c: Disable costmodel.
      	* i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
      	latencies instead of having separate table; make difference between
      	integer and float costs.
      	* i386.h (processor_costs): Remove scalar_stmt_cost,
      	scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
      	scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
      	vec_store_cost.
      	* x86-tune-costs.h: Remove entries which has been removed in
      	procesor_costs from all tables; make cond_taken_branch_cost
      	and cond_not_taken_branch_cost COST_N_INSNS based.
      Index: testsuite/gcc.target/i386/pr79683.c
      ===================================================================
      --- testsuite/gcc.target/i386/pr79683.c	(revision 253957)
      +++ testsuite/gcc.target/i386/pr79683.c	(working copy)
      @@ -1,5 +1,5 @@
       /* { dg-do compile } */
      -/* { dg-options "-O3 -msse2" } */
      +/* { dg-options "-O3 -msse2 -fvect-cost-model=unlimited" } */
       
       struct s {
           __INT64_TYPE__ a;
      Index: config/i386/i386.c
      ===================================================================
      --- config/i386/i386.c	(revision 253957)
      +++ config/i386/i386.c	(working copy)
      @@ -44051,37 +44051,61 @@ static int
       ix86_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
                                        tree vectype, int)
       {
      +  bool fp = false;
      +  machine_mode mode = TImode;
      +  if (vectype != NULL)
      +    {
      +      fp = FLOAT_TYPE_P (vectype);
      +      mode = TYPE_MODE (vectype);
      +    }
      +
         switch (type_of_cost)
           {
             case scalar_stmt:
      -        return ix86_cost->scalar_stmt_cost;
      +        return fp ? ix86_cost->addss : COSTS_N_INSNS (1);
       
             case scalar_load:
      -        return ix86_cost->scalar_load_cost;
      +	/* load/store costs are relative to register move which is 2. Recompute
      + 	   it to COSTS_N_INSNS so everything have same base.  */
      +        return COSTS_N_INSNS (fp ? ix86_cost->sse_load[0]
      +			      : ix86_cost->int_load [2]) / 2;
       
             case scalar_store:
      -        return ix86_cost->scalar_store_cost;
      +        return COSTS_N_INSNS (fp ? ix86_cost->sse_store[0]
      +			      : ix86_cost->int_store [2]) / 2;
       
             case vector_stmt:
      -        return ix86_cost->vec_stmt_cost;
      +        return ix86_vec_cost (mode,
      +			      fp ? ix86_cost->addss : ix86_cost->sse_op,
      +			      true);
       
             case vector_load:
      -        return ix86_cost->vec_align_load_cost;
      +        return ix86_vec_cost (mode,
      +			      COSTS_N_INSNS (ix86_cost->sse_load[2]) / 2,
      +			      true);
       
             case vector_store:
      -        return ix86_cost->vec_store_cost;
      +        return ix86_vec_cost (mode,
      +			      COSTS_N_INSNS (ix86_cost->sse_store[2]) / 2,
      +			      true);
       
             case vec_to_scalar:
      -        return ix86_cost->vec_to_scalar_cost;
      -
             case scalar_to_vec:
      -        return ix86_cost->scalar_to_vec_cost;
      +        return ix86_vec_cost (mode, ix86_cost->sse_op, true);
       
      +      /* We should have separate costs for unaligned loads and gather/scatter.
      +	 Do that incrementally.  */
             case unaligned_load:
      -      case unaligned_store:
             case vector_gather_load:
      +        return ix86_vec_cost (mode,
      +			      COSTS_N_INSNS (ix86_cost->sse_load[2]),
      +			      true);
      +
      +      case unaligned_store:
             case vector_scatter_store:
      -        return ix86_cost->vec_unalign_load_cost;
      +        return ix86_vec_cost (mode,
      +			      COSTS_N_INSNS (ix86_cost->sse_store[2]),
      +			      true);
       
             case cond_branch_taken:
               return ix86_cost->cond_taken_branch_cost;
      @@ -44091,10 +44115,11 @@ ix86_builtin_vectorization_cost (enum ve
       
             case vec_perm:
             case vec_promote_demote:
      -        return ix86_cost->vec_stmt_cost;
      +        return ix86_vec_cost (mode,
      +			      ix86_cost->sse_op, true);
       
             case vec_construct:
      -	return ix86_cost->vec_stmt_cost * (TYPE_VECTOR_SUBPARTS (vectype) - 1);
      +	return ix86_vec_cost (mode, ix86_cost->sse_op, false);
       
             default:
               gcc_unreachable ();
      Index: config/i386/i386.h
      ===================================================================
      --- config/i386/i386.h	(revision 253957)
      +++ config/i386/i386.h	(working copy)
      @@ -277,18 +277,6 @@ struct processor_costs {
       				   parallel.  See also
       				   ix86_reassociation_width.  */
         struct stringop_algs *memcpy, *memset;
      -  const int scalar_stmt_cost;   /* Cost of any scalar operation, excluding
      -				   load and store.  */
      -  const int scalar_load_cost;   /* Cost of scalar load.  */
      -  const int scalar_store_cost;  /* Cost of scalar store.  */
      -  const int vec_stmt_cost;      /* Cost of any vector operation, excluding
      -                                   load, store, vector-to-scalar and
      -                                   scalar-to-vector operation.  */
      -  const int vec_to_scalar_cost;    /* Cost of vect-to-scalar operation.  */
      -  const int scalar_to_vec_cost;    /* Cost of scalar-to-vector operation.  */
      -  const int vec_align_load_cost;   /* Cost of aligned vector load.  */
      -  const int vec_unalign_load_cost; /* Cost of unaligned vector load.  */
      -  const int vec_store_cost;        /* Cost of vector store.  */
         const int cond_taken_branch_cost;    /* Cost of taken branch for vectorizer
       					  cost model.  */
         const int cond_not_taken_branch_cost;/* Cost of not taken branch for
      Index: config/i386/x86-tune-costs.h
      ===================================================================
      --- config/i386/x86-tune-costs.h	(revision 253958)
      +++ config/i386/x86-tune-costs.h	(working copy)
      @@ -79,17 +79,8 @@ struct processor_costs ix86_size_cost =
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         ix86_size_memcpy,
         ix86_size_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  1,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  1,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_BYTES (1),			/* cond_taken_branch_cost.  */
      +  COSTS_N_BYTES (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* Processor costs (relative to an add) */
      @@ -167,17 +158,8 @@ struct processor_costs i386_cost = {	/*
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         i386_memcpy,
         i386_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs i486_memcpy[2] = {
      @@ -256,17 +238,8 @@ struct processor_costs i486_cost = {	/*
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         i486_memcpy,
         i486_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs pentium_memcpy[2] = {
      @@ -343,17 +316,8 @@ struct processor_costs pentium_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         pentium_memcpy,
         pentium_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static const
      @@ -423,17 +387,8 @@ struct processor_costs lakemont_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         pentium_memcpy,
         pentium_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* PentiumPro has optimized rep instructions for blocks aligned by 8 bytes
      @@ -518,17 +473,8 @@ struct processor_costs pentiumpro_cost =
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         pentiumpro_memcpy,
         pentiumpro_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs geode_memcpy[2] = {
      @@ -605,17 +551,8 @@ struct processor_costs geode_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         geode_memcpy,
         geode_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs k6_memcpy[2] = {
      @@ -694,17 +631,8 @@ struct processor_costs k6_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         k6_memcpy,
         k6_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* For some reason, Athlon deals better with REP prefix (relative to loops)
      @@ -784,17 +712,8 @@ struct processor_costs athlon_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         athlon_memcpy,
         athlon_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* K8 has optimized REP instruction for medium sized blocks, but for very
      @@ -883,17 +802,8 @@ struct processor_costs k8_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         k8_memcpy,
         k8_memset,
      -  4,					/* scalar_stmt_cost.  */
      -  2,					/* scalar load_cost.  */
      -  2,					/* scalar_store_cost.  */
      -  5,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  2,					/* vec_align_load_cost.  */
      -  3,					/* vec_unalign_load_cost.  */
      -  3,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
       /* AMDFAM10 has optimized REP instruction for medium sized blocks, but for
      @@ -989,17 +899,8 @@ struct processor_costs amdfam10_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         amdfam10_memcpy,
         amdfam10_memset,
      -  4,					/* scalar_stmt_cost.  */
      -  2,					/* scalar load_cost.  */
      -  2,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  2,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  2,					/* vec_store_cost.  */
      -  2,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /*  BDVER1 has optimized REP instruction for medium sized blocks, but for
      @@ -1097,17 +998,8 @@ const struct processor_costs bdver1_cost
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         bdver1_memcpy,
         bdver1_memset,
      -  6,					/* scalar_stmt_cost.  */
      -  4,					/* scalar load_cost.  */
      -  4,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  4,					/* vec_align_load_cost.  */
      -  4,					/* vec_unalign_load_cost.  */
      -  4,					/* vec_store_cost.  */
      -  4,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
       /*  BDVER2 has optimized REP instruction for medium sized blocks, but for
      @@ -1206,17 +1098,8 @@ const struct processor_costs bdver2_cost
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         bdver2_memcpy,
         bdver2_memset,
      -  6,					/* scalar_stmt_cost.  */
      -  4,					/* scalar load_cost.  */
      -  4,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  4,					/* vec_align_load_cost.  */
      -  4,					/* vec_unalign_load_cost.  */
      -  4,					/* vec_store_cost.  */
      -  4,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
       
      @@ -1306,17 +1189,8 @@ struct processor_costs bdver3_cost = {
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         bdver3_memcpy,
         bdver3_memset,
      -  6,					/* scalar_stmt_cost.  */
      -  4,					/* scalar load_cost.  */
      -  4,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  4,					/* vec_align_load_cost.  */
      -  4,					/* vec_unalign_load_cost.  */
      -  4,					/* vec_store_cost.  */
      -  4,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
       /*  BDVER4 has optimized REP instruction for medium sized blocks, but for
      @@ -1405,17 +1279,8 @@ struct processor_costs bdver4_cost = {
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         bdver4_memcpy,
         bdver4_memset,
      -  6,					/* scalar_stmt_cost.  */
      -  4,					/* scalar load_cost.  */
      -  4,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  4,					/* vec_align_load_cost.  */
      -  4,					/* vec_unalign_load_cost.  */
      -  4,					/* vec_store_cost.  */
      -  4,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
       
      @@ -1524,17 +1389,8 @@ struct processor_costs znver1_cost = {
         4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
         znver1_memcpy,
         znver1_memset,
      -  6,					/* scalar_stmt_cost.  */
      -  4,					/* scalar load_cost.  */
      -  4,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  4,					/* vec_align_load_cost.  */
      -  4,					/* vec_unalign_load_cost.  */
      -  4,					/* vec_store_cost.  */
      -  4,					/* cond_taken_branch_cost.  */
      -  2,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
       };
       
         /* BTVER1 has optimized REP instruction for medium sized blocks, but for
      @@ -1624,17 +1480,8 @@ const struct processor_costs btver1_cost
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         btver1_memcpy,
         btver1_memset,
      -  4,					/* scalar_stmt_cost.  */
      -  2,					/* scalar load_cost.  */
      -  2,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  2,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  2,					/* vec_store_cost.  */
      -  2,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs btver2_memcpy[2] = {
      @@ -1721,17 +1568,8 @@ const struct processor_costs btver2_cost
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         btver2_memcpy,
         btver2_memset,
      -  4,					/* scalar_stmt_cost.  */
      -  2,					/* scalar load_cost.  */
      -  2,					/* scalar_store_cost.  */
      -  6,					/* vec_stmt_cost.  */
      -  0,					/* vec_to_scalar_cost.  */
      -  2,					/* scalar_to_vec_cost.  */
      -  2,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  2,					/* vec_store_cost.  */
      -  2,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs pentium4_memcpy[2] = {
      @@ -1809,17 +1647,8 @@ struct processor_costs pentium4_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         pentium4_memcpy,
         pentium4_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs nocona_memcpy[2] = {
      @@ -1900,17 +1729,8 @@ struct processor_costs nocona_cost = {
         1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         nocona_memcpy,
         nocona_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs atom_memcpy[2] = {
      @@ -1989,17 +1809,8 @@ struct processor_costs atom_cost = {
         2, 2, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
         atom_memcpy,
         atom_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs slm_memcpy[2] = {
      @@ -2078,17 +1889,8 @@ struct processor_costs slm_cost = {
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         slm_memcpy,
         slm_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  4,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       static stringop_algs intel_memcpy[2] = {
      @@ -2167,17 +1969,8 @@ struct processor_costs intel_cost = {
         1, 4, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         intel_memcpy,
         intel_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  4,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* Generic should produce code tuned for Core-i7 (and newer chips)
      @@ -2265,17 +2058,8 @@ struct processor_costs generic_cost = {
         1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
         generic_memcpy,
         generic_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
       
       /* core_cost should produce code tuned for Core familly of CPUs.  */
      @@ -2366,16 +2150,7 @@ struct processor_costs core_cost = {
         1, 4, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
         core_memcpy,
         core_memset,
      -  1,					/* scalar_stmt_cost.  */
      -  1,					/* scalar load_cost.  */
      -  1,					/* scalar_store_cost.  */
      -  1,					/* vec_stmt_cost.  */
      -  1,					/* vec_to_scalar_cost.  */
      -  1,					/* scalar_to_vec_cost.  */
      -  1,					/* vec_align_load_cost.  */
      -  2,					/* vec_unalign_load_cost.  */
      -  1,					/* vec_store_cost.  */
      -  3,					/* cond_taken_branch_cost.  */
      -  1,					/* cond_not_taken_branch_cost.  */
      +  COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
      +  COSTS_N_INSNS (1),			/* cond_not_taken_branch_cost.  */
       };
      
      From-SVN: r253975
      Jan Hubicka committed
    • Fix typos · 8c282aba
      From-SVN: r253972
      Eric Botcazou committed
    • utils.c (pad_type_hash): Use hashval_t for hash value. · f330b1ec
      	* gcc-interface/utils.c (pad_type_hash): Use hashval_t for hash value.
      	(convert): Do not use an unchecked conversion for converting from a
      	type to another type padding it.
      
      From-SVN: r253971
      Eric Botcazou committed
    • re PR fortran/82586 ([PDT] ICE: write_symbol(): bad module symbol) · de624bee
      2017-10-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82586
      	* decl.c (gfc_get_pdt_instance): Remove the error message that
      	the parameter does not have a corresponding component since
      	this is now taken care of when the derived type is resolved. Go
      	straight to error return instead.
      	(gfc_match_formal_arglist): Make the PDT relevant errors
      	immediate so that parsing of the derived type can continue.
      	(gfc_match_derived_decl): Do not check the match status on
      	return from gfc_match_formal_arglist for the same reason.
      	* resolve.c (resolve_fl_derived0): Check that each type
      	parameter has a corresponding component.
      
      	PR fortran/82587
      	* resolve.c (resolve_generic_f): Check that the derived type
      	can be used before resolving the struture constructor.
      
      	PR fortran/82589
      	* symbol.c (check_conflict): Add the conflicts involving PDT
      	KIND and LEN attributes.
      
      2017-10-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82586
      	* gfortran.dg/pdt_16.f03 : New test.
      	* gfortran.dg/pdt_4.f03 : Catch the changed messages.
      	* gfortran.dg/pdt_8.f03 : Ditto.
      
      	PR fortran/82587
      	* gfortran.dg/pdt_17.f03 : New test.
      
      	PR fortran/82589
      	* gfortran.dg/pdt_18.f03 : New test.
      
      From-SVN: r253970
      Paul Thomas committed
    • Fix wording · aa93ca09
      From-SVN: r253969
      Eric Botcazou committed
    • Fix invalid path::iterator test · dfdf2839
      	* testsuite/experimental/filesystem/path/itr/traversal.cc: Do not
      	increment past-the-end iterators.
      
      From-SVN: r253967
      Jonathan Wakely committed
    • Daily bump. · f154c1fa
      From-SVN: r253966
      GCC Administrator committed
  4. 20 Oct, 2017 3 commits