157106 Commits

Author SHA1 Message Date
Ville Voutilainen
957f5feacf Deduction guides for associative containers, debug mode deduction guide fixes.
* include/bits/stl_iterator.h (__iter_key_t)
(__iter_val_t, __iter_to_alloc_t): New.
* include/bits/stl_map.h: Add deduction guides.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/unordered_map.h: Likewise.
* include/bits/unordered_set.h: Likewise.
* include/debug/deque: Likewise.
* include/debug/forward_list: Likewise.
* include/debug/list: Likewise.
* include/debug/map.h: Likewise.
* include/debug/multimap.h: Likewise.
* include/debug/multiset.h: Likewise.
* include/debug/set.h: Likewise.
* include/debug/unordered_map: Likewise.
* include/debug/unordered_set: Likewise.
* include/debug/vector: Likewise.
* testsuite/23_containers/map/cons/deduction.cc: New.
* testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
* testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
* testsuite/23_containers/set/cons/deduction.cc: Likewise.
* testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
* testsuite/23_containers/unordered_multimap/cons/deduction.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/cons/deduction.cc:
Likewise.
* testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.

From-SVN: r254113
2017-10-26 19:42:31 +03:00
Wilco Dijkstra
1f7bffd094 Simplify frame layout for stack probing
This patch makes some changes to the frame layout in order to simplify
stack probing.  We want to use the save of LR as a probe in any non-leaf
function.  With shrinkwrapping we may only save LR before a call, so it
is useful to define a fixed location in the callee-saves. So force LR at
the bottom of the callee-saves even with -fomit-frame-pointer.

Also remove a rarely used frame layout that saves the callee-saves first
with -fomit-frame-pointer.  Doing so allows the store of LR to be used as
a valid stack probe in all frames.

    gcc/
	* config/aarch64/aarch64.c (aarch64_layout_frame):
        Ensure LR is always stored at the bottom of the callee-saves.
        Remove rarely used frame layout which saves callee-saves at top of
        frame, so the store of LR can be used as a valid probe in all cases.

From-SVN: r254112
2017-10-26 16:40:25 +00:00
Wilco Dijkstra
37e4d57b99 Improve addressing of TI/TFmode
In https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01125.html Jiong
pointed out some addressing inefficiencies due to a recent change in
regcprop (https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00775.html).

This patch improves aarch64_legitimize_address_displacement to split
unaligned offsets of TImode and TFmode accesses.  The resulting code
is better and no longer relies on the original regcprop optimization.

For the test we now produce:

	add	x1, sp, 4
	stp	xzr, xzr, [x1, 24]

rather than:

        mov     x1, sp
        add     x1, x1, 28
        stp     xzr, xzr, [x1]

    gcc/
	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
	Improve unaligned TImode/TFmode base/offset split.

    testsuite/
	* gcc.target/aarch64/ldp_stp_unaligned_2.c: New file.

From-SVN: r254111
2017-10-26 16:34:03 +00:00
Richard Sandiford
9eaf97d6d7 Make more use of df_read_modify_subreg_p
This patch uses df_read_modify_subreg_p to check whether writing
to a subreg would preserve some of the existing contents.

This has the effect of putting more emphasis on the
REGMODE_NATURAL_SIZE-based definition of whether something can be
partially modified, instead of using UNITS_PER_WORD unconditionally.
This becomes important for SVE, where UNITS_PER_WORD has no
significance for subregs of multi-register LD2/ST2, LD3/ST3 and
LD4/ST4 tuples.

2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
	* combine.c (find_single_use_1): Likewise.
	(expand_field_assignment): Likewise.
	(move_deaths): Likewise.
	* lra-constraints.c (simplify_operand_subreg): Likewise.
	(curr_insn_transform): Likewise.
	* lra.c (collect_non_operand_hard_regs): Likewise.
	(add_regs_to_insn_regno_info): Likewise.
	* rtlanal.c (reg_referenced_p): Likewise.
	(covers_regno_no_parallel_p): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r254110
2017-10-26 16:12:09 +00:00
Richard Sandiford
7984457f82 Stop print_hex from printing bits above the precision
2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* wide-int-print.cc (print_hex): Loop based on extract_uhwi.
	Don't print any bits outside the precision of the value.
	* wide-int.cc (test_printing): Add some new tests.

From-SVN: r254109
2017-10-26 16:09:17 +00:00
James Greenhalgh
18b279715c [obvious][arm testsuite] Fixup expected location in require-pic-register-loc.c
After r254010 we now add -gcolumn-info by default, that means the tests
in gcc.target/arm/require-pic-register-loc.c need adjusting to not expect
to see column zero.

gcc/testsuite/

	* gcc.target/arm/require-pic-register-loc.c: Use wider regex for
	column information.

From-SVN: r254106
2017-10-26 14:17:40 +00:00
Nathan Sidwell
75bafecbd1 [C++ PATCH] Kill IDENTIFIER_LABEL_VALUE
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01935.html
	* decl.c (sort_labels): Restore function.
	(pop_labels): Sort labels
	(identify_goto): Add translation markup.

From-SVN: r254104
2017-10-26 12:47:14 +00:00
Rainer Orth
8c2e5ecf99 Use -xbrace_comment=no with recent Solaris/x86 as
* configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
	supports -xbrace_comment option.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
	(ASM_CPU_SPEC): Use it.

From-SVN: r254103
2017-10-26 12:22:21 +00:00
Richard Sandiford
f073de07ad This patch adds a new hook that gives the preferred alignment for a static rtx...
TARGET_STATIC_RTX_ALIGNMENT

This patch adds a new hook that gives the preferred alignment for
a static rtx, so that we don't need to query the front end in
force_const_mem.

2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* target.def (static_rtx_alignment): New hook.
	* targhooks.h (default_static_rtx_alignment): Declare.
	* targhooks.c (default_static_rtx_alignment): New function.
	* doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
	* doc/tm.texi: Regenerate.
	* varasm.c (force_const_mem): Use targetm.static_rtx_alignment
	instead of targetm.constant_alignment.  Remove call to
	set_mem_attributes.
	* config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	(cris_preferred_mininum_alignment): New function, split out from...
	(cris_constant_alignment): ...here.
	(cris_static_rtx_alignment): New function.
	* config/i386/i386.c (ix86_static_rtx_alignment): New function,
	split out from...
	(ix86_constant_alignment): ...here.
	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	* config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	(mmix_static_rtx_alignment): New function.
	* config/spu/spu.c (spu_static_rtx_alignment): New function.
	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.

From-SVN: r254102
2017-10-26 11:28:25 +00:00
Tamar Christina
4bc19a3b1a 2017-10-26 Tamar Christina <tamar.christina@arm.com>
* gcc.dg/vect/vect-reduc-dot-s8a.c
	(dg-additional-options, dg-require-effective-target): Add +dotprod.
	* gcc.dg/vect/vect-reduc-dot-u8a.c
	(dg-additional-options, dg-require-effective-target): Add +dotprod.

From-SVN: r254101
2017-10-26 09:59:14 +00:00
Tamar Christina
2b5de01437 2017-10-26 Tamar Christina <tamar.christina@arm.com>
* lib/target-supports.exp
	(check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache): New.
	(check_effective_target_arm_v8_2a_dotprod_neon_ok): New.
	(add_options_for_arm_v8_2a_dotprod_neon): New.
	(check_effective_target_arm_v8_2a_dotprod_neon_hw): New.
	(check_effective_target_vect_sdot_qi): Add ARM && AArch64.
	(check_effective_target_vect_udot_qi): Likewise.
	* gcc.target/arm/simd/vdot-exec.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vdot-exec.c: New.
	* gcc/doc/sourcebuild.texi: Document arm_v8_2a_dotprod_neon.

From-SVN: r254100
2017-10-26 09:57:09 +00:00
Tamar Christina
c5a9211108 vect-multitypes-1.c: Correct target selector.
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/vect-multitypes-1.c: Correct target selector.

From-SVN: r254099
2017-10-26 06:56:31 +00:00
Tamar Christina
1013465fea re PR target/81800 (On aarch64 ilp32 lrint should not be inlined as two instructions)
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	PR target/81800
	* config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): Add flag_trapping_math
	and flag_fp_int_builtin_inexact.

gcc/testsuite/
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math.

From-SVN: r254098
2017-10-26 06:42:41 +00:00
Tamar Christina
c3ef5fda14 vect-dot-qi.h: New.
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h: New.
	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-s8.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-u8.c: New.

From-SVN: r254097
2017-10-26 06:39:56 +00:00
GCC Administrator
62fb4acb48 Daily bump.
From-SVN: r254096
2017-10-26 00:16:12 +00:00
David Malcolm
1a59ccf25d C: detect more missing semicolons (PR c/7356)
c_parser_declaration_or_fndef has logic for parsing what might be
either a declaration or a function definition.

This patch adds a test to detect cases where a semicolon would have
terminated the decls as a declaration, where the token that follows
would start a new declaration specifier, and updates the error message
accordingly, with a fix-it hint.

This addresses PR c/7356, fixing the case of a stray token before a
#include that previously gave inscrutable output, and improving e.g.:

  int i
  int j;

from:

  t.c:2:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
   int j;
   ^~~

to:

  t.c:1:6: error: expected ';' before 'int'
   int i
        ^
        ;
   int j;
   ~~~

gcc.dg/noncompile/920923-1.c needs a slight update, as the output for
the first line changes from:

  920923-1.c:2:14: error: expected '=', ',', ';', 'asm' or
  '__attribute__' before 'unsigned'
   typedef BYTE unsigned char; /* { dg-error "expected" } */
                ^~~~~~~~

to:
  920923-1.c:2:13: error: expected ';' before 'unsigned'
   typedef BYTE unsigned char; /* { dg-error "expected" } */
               ^~~~~~~~~
               ;
  920923-1.c:2:1: warning: useless type name in empty declaration
   typedef BYTE unsigned char; /* { dg-error "expected" } */
   ^~~~~~~

The patch also adds a test for PR c/44515 as a baseline.

gcc/c/ChangeLog:
	PR c/7356
	* c-parser.c (c_parser_declaration_or_fndef): Detect missing
	semicolons.

gcc/testsuite/ChangeLog:
	PR c/7356
	PR c/44515
	* c-c++-common/pr44515.c: New test case.
	* gcc.dg/pr7356-2.c: New test case.
	* gcc.dg/pr7356.c: New test case.
	* gcc.dg/spellcheck-typenames.c: Update the "singed" char "TODO"
	case to reflect changes to output.
	* gcc.dg/noncompile/920923-1.c: Add dg-warning to reflect changes
	to output.

From-SVN: r254093
2017-10-25 23:53:41 +00:00
Palmer Dabbelt
0b661358bc RISC-V: Add Sign/Zero extend patterns for PIC loads
Loads on RISC-V are sign-extending by default, but we weren't telling
GCC this in our PIC load patterns.  This corrects the problem, and adds
a zero-extending pattern as well.

gcc/ChangeLog

2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>

       * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
       * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
       mark as a sign-extending load.
       (local_pic_load_u): Define.

From-SVN: r254092
2017-10-25 22:45:55 +00:00
Ian Lance Taylor
4273ea2378 Makefile.am (check-go-tool): Output colon after ${fl}.
* Makefile.am (check-go-tool): Output colon after ${fl}.
	(check-runtime, check-cgo-test, check-carchive-test): Likewise.
	* Makefile.in: Rebuild.

From-SVN: r254090
2017-10-25 22:00:50 +00:00
Eric Botcazou
c0b24017eb re PR middle-end/82062 (simple conditional expressions no longer folded)
PR middle-end/82062
	* fold-const.c (operand_equal_for_comparison_p): Also return true
	if ARG0 is a simple variant of ARG1 with narrower precision.
	(fold_ternary_loc): Always pass unstripped operands to the predicate.

From-SVN: r254089
2017-10-25 21:53:21 +00:00
Nathan Sidwell
a2af967e97 [C++ PATCH] Kill IDENTIFIER_LABEL_VALUE
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01854.html
	Kill IDENTIFIER_LABEL_VALUE.
	* cp-tree.h (lang_identifier): Delete label_value slot.
	(IDENTIFIER_LABEL_VALUE, SET_IDENTIFIER_LABEL_VALUE): Delete.
	(struct named_label_hasher): Rename to ...
	(struct named_label_hash): ... here.  Reimplement.
	(struct language_function): Adjust x_named_labels.
	* name-lookup.h (struct cp_label_binding): Delete.
	(struct cp_binding_level): Delete shadowed_labels slot.
	* decl.c (struct named_label_entry): Add name and outer slots.
	(pop_label): Rename to ...
	(check_label_used): ... here.  Don't pop.
	(note_label, sort_labels): Delete.
	(pop_labels, pop_local_label): Reimplement.
	(poplevel): Pop local labels as any other decl. Remove
	shadowed_labels handling.
	(named_label_hash::hash, named_label_hash::equal): New.
	(make_label_decl): Absorb into ...
	(lookup_label_1): ... here.  Add making_local_p arg, reimplement.
	(lookup_label, declare_local_label): Adjust.
	(check_goto, define_label): Adjust.
	* lex.c (make_conv_op_name): Don't clear IDENTIFIER_LABEL_VALUE.
	* ptree.c (cxx_print_identifier): Don't print identifier binding.

From-SVN: r254087
2017-10-25 21:37:33 +00:00
Nathan Sidwell
733ba9b9a3 [C++ PATCH] Label checking cleanups
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01847.html
	* decl.c (identifier_goto): Reduce duplication.
	(check_previous_goto_1): Likewise.
	(check_goto): Move var decls to initialization.
	(check_omp_return, define_label_1, define_label): Likewise.

From-SVN: r254086
2017-10-25 20:52:54 +00:00
Jan Hubicka
a4fe6139ab i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather cost correctly.
* i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
	cost correctly.
	* i386.h (processor_costs): Add gather_static, gather_per_elt,
	scatter_static, scatter_per_elt.
	* x86-tune-costs.h: Add new cost entries.

From-SVN: r254083
2017-10-25 19:11:41 +00:00
Bernhard Reutner-Fischer
d185db140a match.c (gfc_match_type_is): Fix typo in error message
2017-10-25  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	* match.c (gfc_match_type_is): Fix typo in error message.

From-SVN: r254082
2017-10-25 21:10:15 +02:00
Jonathan Wakely
5fdbeb16d7 Update C++17 library status documentation
* doc/xml/manual/status_cxx2017.xml: Update C++17 status, and
	information on feature-test macros.
	* doc/html/*: Regenerate.

From-SVN: r254078
2017-10-25 15:06:12 +01:00
Jonathan Wakely
30e0aed183 PR libstdc++/82716 avoid stupid -Wmismatched-tags warnings
PR libstdc++/82716
	* include/std/array (tuple_size, tuple_element): Change class-key
	from class to struct, to avoid annoying Clang warnings.

From-SVN: r254077
2017-10-25 14:55:56 +01:00
Jonathan Wakely
220645d019 PR libstdc++/79283 fix filesystem::read_symlink for /proc
PR libstdc++/79283
	* src/filesystem/ops.cc (read_symlink): Handle st_size being zero.
	* src/filesystem/std-ops.cc (read_symlink): Likewise.
	(do_copy_file) [!NEED_DO_COPY_FILE]: Avoid multiple definitions.

From-SVN: r254076
2017-10-25 13:42:58 +01:00
Jonathan Wakely
eeb517d3e7 Fix filesystem::path::lexically_normal algorithm
* src/filesystem/std-path.cc (path::lexically_normal): Add missing
	step to algorithm, for removing dot-dot elements after root-directory.
	* testsuite/27_io/filesystem/operations/canonical.cc: Use
	compare_paths for more exhaustive checks.
	* testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
	* testsuite/27_io/filesystem/path/append/path.cc: Likewise.
	* testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
	* testsuite/27_io/filesystem/path/concat/strings.cc: Fix comment.
	* testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
	* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/generation/normal.cc: Use
	compare_paths for more exhaustive checks. Add extra testcases.
	* testsuite/27_io/filesystem/path/generation/proximate.cc: Use
	compare_paths for more exhaustive checks.
	* testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Remove
	unused header.
	* testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Fix
	comment.
	* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Use
	compare_paths for more exhaustive checks.
	* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
	Likewise.
	* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
	Likewise.
	* testsuite/util/testsuite_fs.h (compare_paths): Also compare native
	strings.

From-SVN: r254075
2017-10-25 13:42:53 +01:00
Richard Biener
5de583cc18 tree-ssa-sccvn.h (vn_eliminate): Declare.
2017-10-25  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.h (vn_eliminate): Declare.
	* tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
	class pass_fre): Move to ...
	* tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
	class pass_fre): ... here and adjust for statistics.

From-SVN: r254074
2017-10-25 10:20:37 +00:00
Richard Biener
a596f4970e re PR tree-optimization/82436 (465.tonto ICE in vect_get_slp_vect_defs, at tree-vect-slp.c:3410)
2017-10-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82436
	* gcc.dg/torture/pr82436-2.c: New testcase.

From-SVN: r254073
2017-10-25 09:59:39 +00:00
Paolo Carlini
7e252d9b9b re PR c++/71820 (ICE on valid C++ code: in arg_assoc_type, at cp/name-lookup.c:5583)
2017-10-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71820
	* g++.dg/ext/typeof12.C: New.

From-SVN: r254072
2017-10-25 09:55:21 +00:00
Tom de Vries
7e65575a0e Fix scan-assembler in tree-ssa/loop-1.c for nvptx
2017-10-25  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/tree-ssa/loop-1.c: Add xfail for nvptx in scan-assembler-times
	line, and add nvptx-specific version.

From-SVN: r254071
2017-10-25 09:43:54 +00:00
Rainer Orth
5dd9af4977 Fix gcc.target/i386/cet-sjlj-5.c on Solaris
* gcc.target/i386/cet-sjlj-5.c: Allow for emtpy user label prefix
	in setjmp call.

From-SVN: r254070
2017-10-25 09:15:30 +00:00
Jakub Jelinek
bc1a75dda2 re PR libstdc++/81706 (std::sin vectorization bug)
PR libstdc++/81706
	* attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
	for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
	(duplicate_one_attribute, copy_attributes_to_builtin): New functions.
	* attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
	declarations.

	* c-decl.c (merge_decls): Copy "omp declare simd" attributes from
	newdecl to corresponding __builtin_ if any.

	* decl.c (duplicate_decls): Copy "omp declare simd" attributes from
	newdecl to corresponding __builtin_ if any.

	* gcc.target/i386/pr81706.c: New test.
	* g++.dg/ext/pr81706.C: New test.

From-SVN: r254069
2017-10-25 10:05:58 +02:00
Richard Biener
57904e87b9 tree-ssa-pre.c (need_eh_cleanup, [...]): Move inside...
2017-10-25  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
	el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
	eliminate_push_avail, eliminate_insert): Move inside...
	(class eliminate_dom_walker): ... this class in preparation
	of move.
	(fini_eliminate): Remove by merging with ...
	(eliminate): ... this function.  Adjust for class changes.
	(pass_pre::execute): Remove fini_eliminate call.
	(pass_fre::execute): Likewise.

From-SVN: r254068
2017-10-25 07:08:12 +00:00
Jonathan Wakely
e921c7e5a6 PR libstdc++/82706 fix test for case where operations succeed
PR libstdc++/82706
	* testsuite/27_io/filesystem/operations/permissions.cc: Fix test.

From-SVN: r254067
2017-10-25 01:27:10 +01:00
GCC Administrator
03ca5c55f9 Daily bump.
From-SVN: r254066
2017-10-25 00:16:17 +00:00
François Dumont
8468bfe8cb libstdc++.exp (check_v3_target_normal_mode): Add c++config.h include.
2017-10-24  François Dumont  <fdumont@gcc.gnu.org>

	* testsuite/lib/libstdc++.exp (check_v3_target_normal_mode): Add
	c++config.h include.
	(check_v3_target_normal_namespace): New.
	* testsuite/lib/dg-options.exp (dg-require-normal-namespace): New.
	* testsuite/18_support/headers/limits/synopsis.cc: Add latter.
	* testsuite/20_util/from_chars/requirements.cc: Likewise.
	* testsuite/20_util/headers/functional/synopsis.cc: Likewise.
	* testsuite/20_util/headers/memory/synopsis.cc: Likewise.
	* testsuite/20_util/headers/utility/synopsis.cc: Likewise.
	* testsuite/20_util/to_chars/requirements.cc: Likewise.
	* testsuite/21_strings/headers/string/synopsis.cc: Likewise.
	* testsuite/22_locale/headers/locale/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/bitset/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/forward_list/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/map/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/set/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/stack/synopsis.cc: Likewise.
	* testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
	* testsuite/23_containers/map/modifiers/erase/abi_tag.cc: Likewise.
	* testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: Likewise.
	* testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: Likewise.
	* testsuite/23_containers/set/modifiers/erase/abi_tag.cc: Likewise.
	* testsuite/24_iterators/headers/iterator/synopsis.cc: Likewise.
	* testsuite/24_iterators/headers/iterator/synopsis_c++11.cc: Likewise.
	* testsuite/24_iterators/headers/iterator/synopsis_c++14.cc: Likewise.
	* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Likewise.
	* testsuite/26_numerics/complex/abi_tag.cc: Likewise.
	* testsuite/26_numerics/headers/complex/synopsis.cc: Likewise.
	* testsuite/26_numerics/headers/valarray/synopsis.cc: Likewise.
	* testsuite/27_io/headers/fstream/synopsis.cc: Likewise.
	* testsuite/27_io/headers/ios/synopsis.cc: Likewise.
	* testsuite/27_io/headers/istream/synopsis.cc: Likewise.
	* testsuite/27_io/headers/ostream/synopsis.cc: Likewise.
	* testsuite/27_io/headers/sstream/synopsis.cc: Likewise.
	* testsuite/27_io/headers/streambuf/synopsis.cc: Likewise.

From-SVN: r254060
2017-10-24 20:20:12 +00:00
Jakub Jelinek
6ab5a6f30f re PR target/82460 (AVX512: choose between vpermi2d and vpermt2d to save mov instructions. Also, fails to optimize away shifts before shuffle)
PR target/82460
	* config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
	(VPERMI2, VPERMI2I): New mode iterators.
	(<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
	(<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
	patterns.
	(<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
	mode iterator.  Remove 3 old define_insn patterns.
	(*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
	(<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
	VPERMI2 mode iterator, remove the other two expanders.
	(<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
	to use VPERMI2 mode iterator, add another alternative for vpermi2*
	instructions, remove the other two patterns.
	(<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
	mode iterator, remove the other two patterns.
	* config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
	(ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
	arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
	and adjust argument order accordingly.
	(ix86_expand_vec_perm): Adjust caller.
	(expand_vec_perm_1): Likewise.
	(expand_vec_perm_vpermi2_vpshub2): Rename to ...
	(expand_vec_perm_vpermt2_vpshub2): ... this.
	(ix86_expand_vec_perm_const_1): Adjust caller.
	(ix86_vectorize_vec_perm_const_ok): Adjust comments.

	* gcc.target/i386/pr82460-1.c: New test.
	* gcc.target/i386/pr82460-2.c: New test.
	* gcc.target/i386/avx512f-vpermt2pd-1.c: Adjust scan-assembler*
	regexps to allow vpermt2* to vpermi2* replacement or vice versa
	where possible.
	* gcc.target/i386/avx512vl-vpermt2pd-1.c: Likewise.
	* gcc.target/i386/avx512f-vpermt2d-1.c: Likewise.
	* gcc.target/i386/vect-pack-trunc-2.c: Likewise.
	* gcc.target/i386/avx512vl-vpermt2ps-1.c: Likewise.
	* gcc.target/i386/avx512vl-vpermt2q-1.c: Likewise.
	* gcc.target/i386/avx512f-vpermt2ps-1.c: Likewise.
	* gcc.target/i386/avx512vl-vpermt2d-1.c: Likewise.
	* gcc.target/i386/avx512bw-vpermt2w-1.c: Likewise.
	* gcc.target/i386/avx512vbmi-vpermt2b-1.c: Likewise.
	* gcc.target/i386/avx512f-vpermt2q-1.c: Likewise.

From-SVN: r254059
2017-10-24 21:35:37 +02:00
Jakub Jelinek
5c0331f62d re PR target/82370 (AVX512 can use a memory operand for immediate-count vpsrlw, but gcc doesn't.)
PR target/82370
	* config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
	(VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
	(vec_shl_<mode>): Remove unused expander.
	(avx512bw_<shift_insn><mode>3): New define_insn.
	(<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
	(<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.

	* gcc.target/i386/pr82370.c: New test.

From-SVN: r254058
2017-10-24 21:34:06 +02:00
Paolo Carlini
ff1ff960f5 re PR c++/82466 (Missing warning for re-declaration of built-in function as variable)
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82466
	* doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
	description.

/cp
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82466
	* decl.c (duplicate_decls): Warn for built-in functions declared as
	non-function, use OPT_Wbuiltin_declaration_mismatch.

	* decl.c (duplicate_decls): Avoid redundant '+' in warning_at.

/c
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82466
	* c-decl.c (diagnose_mismatched_decls): Use
	OPT_Wbuiltin_declaration_mismatch.

/testsuite
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82466
	* c-c++-common/Wbuiltin-declaration-mismatch-1.c: New.
	* c-c++-common/Wno-builtin-declaration-mismatch-1.c: Likewise.
	* g++.dg/warn/Wbuiltin_declaration_mismatch-1.C: Likewise.
	* g++.dg/parse/builtin2.C: Adjust.
	* g++.old-deja/g++.mike/p811.C: Likewise.

From-SVN: r254057
2017-10-24 19:01:03 +00:00
Wilco Dijkstra
f9f43fb3a8 Cleanup autopref scheduling
r253236 broke AArch64 bootstrap. Earlier revision r253071 changed scheduling
behaviour on AArch64 as autopref scheduling no longer checks the base.

This patch fixes the bootstrap failure and cleans up autopref scheduling.
The code is greatly simplified.  Sort accesses on the offset first, and
only if the offsets are the same fall back to other comparisons in
rank_for_schedule.  This doesn't at all restore the original behaviour
since we no longer compare the base address, but it now defines a total
sorting order.  More work will be required to improve the sorting so
that only loads/stores with the same base are affected.

    gcc/
	PR rtl-optimization/82396
	* gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
	(autopref_multipass_init): Simplify initialization.
	(autopref_rank_data): Simplify sort order.
	* gcc/sched-int.h (autopref_multipass_data_): Remove
	multi_mem_insn_p, min_offset and max_offset.

From-SVN: r254056
2017-10-24 17:21:19 +00:00
Wilco Dijkstra
acea40ac74 PR60580: Fix frame pointer option magic
To fix PR60580 simplify the logic in aarch64_override_options_after_change_1 (). 
If the frame pointer is enabled, set it to a special value that behaves similar
to frame pointer omission.  If we don't do this all leaf functions will get a
frame pointer even if flag_omit_leaf_frame_pointer is set.

If flag_omit_frame_pointer has this special value, we must force the frame
pointer if not in a leaf function.  We also need to force it in a leaf function
if flag_omit_frame_pointer is not set or if LR is used.

Doing this allows both -fomit-frame-pointer and -fomit-leaf-frame-pointer to be
independently set and changed in each function with the expected behaviour.

    gcc/
	PR middle-end/60580
	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
	Check special value of flag_omit_frame_pointer.
	(aarch64_can_eliminate): Likewise.
	(aarch64_override_options_after_change_1): Simplify handling of
	-fomit-frame-pointer and -fomit-leaf-frame-pointer.

From-SVN: r254052
2017-10-24 16:58:02 +00:00
Paolo Carlini
02b0c08c2c re PR c++/80991 (ICE with __is_trivially_constructible in template)
/cp
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80991
	* pt.c (value_dependent_expression_p, [TRAIT_EXPR]): Handle
	a TREE_LIST as TRAIT_EXPR_TYPE2.

/testsuite
2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80991
	* g++.dg/ext/is_trivially_constructible5.C: New.

From-SVN: r254051
2017-10-24 16:41:05 +00:00
Rainer Orth
5cc75a43b1 Fix gcc.target/i386/387-ficom-[12].c on Solaris
* gcc.target/i386/387-ficom-1.c: Allow for ficomp without s
	suffix.
	* gcc.target/i386/387-ficom-2.c: Likewise.

From-SVN: r254050
2017-10-24 16:30:44 +00:00
Rainer Orth
2f5124a6e9 Fix gcc.target/i386/cet-sjlj-3.c on Solaris
* gcc.target/i386/cet-sjlj-3.c: Allow for emtpy user label prefix
	in setjmp call.

From-SVN: r254049
2017-10-24 16:29:20 +00:00
Richard Biener
da76b2532f re PR tree-optimization/82697 (Wrong optimization with aliasing and "if")
2017-10-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82697
	* tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
	zero for conditional load and unconditional store.

	* gcc.dg/torture/pr82697.c: New testcase.

From-SVN: r254047
2017-10-24 13:51:45 +00:00
Mukesh Kapoor
eab01c18fd re PR c++/82307 (unscoped enum-base incorrect cast)
/cp
2017-10-24  Mukesh Kapoor  <mukesh.kapoor@oracle.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82307
	* cvt.c (type_promotes_to): Implement C++17, 7.6/4, about unscoped
	enumeration type whose underlying type is fixed.

/testsuite
2017-10-24  Mukesh Kapoor  <mukesh.kapoor@oracle.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82307
	* g++.dg/cpp0x/enum35.C: New.
	* g++.dg/cpp0x/enum36.C: Likewise.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r254046
2017-10-24 13:49:13 +00:00
Jonathan Wakely
d56a36834f Avoid -Wattribute-alias warnings for long double compat symbols
* config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Ignore
	-Wattribute-alias warnings.
	* src/c++11/istream-inst.cc: Likewise.
	* src/c++11/locale-inst.cc: Likewise.
	* src/c++11/ostream-inst.cc: Likewise.
	* src/c++11/wlocale-inst.cc: Likewise.
	* src/c++98/hash-long-double-tr1-aux.cc: Likewise.

From-SVN: r254045
2017-10-24 14:18:59 +01:00
Jonathan Wakely
02e2a7d8ef Refactor std::basic_string_view members and add noexcept
* include/bits/string_view.tcc (find_first_of, find_last_of)
	(find_first_not_of, find_last_not_of): Add noexcept.
	* include/std/string_view (basic_string_view(const _CharT*))
	(basic_string_view(const _CharT*, size_type))
	(front, back, remove_prefix, remove_suffix, find, rfind)
	(find_first_of, find_first_not_of): Add noexcept.
	(at(size_type), _S_compare(size_type, size_type)): Replace conditional
	expressions with if statements.
	(copy(_CharT*, size_type, size_type), substr(size_type, size_type)):
	Use _M_check for length checks.
	(compare(basic_string_view)): Reformat.
	(_M_check(size_type, const char)): Add noexcept(false).
	(_M_limit(size_type, size_type)): Use noexcept not _GLIBCXX_NOEXCEPT.

From-SVN: r254044
2017-10-24 14:18:52 +01:00
H.J. Lu
c58a9f350a Add bootstrap-cet.mk to bootstrap GCC with Intel CET
Bootstrap GCC with Intel CET by configuring GCC with

--with-build-config="bootstrap-cet bootstrap-debug"

Tested on Linux/i686 and Linux/x86-64.

config/

	* bootstrap-cet.mk: New file.

gcc/

	* doc/install.texi: Document bootstrap-cet.

From-SVN: r254043
2017-10-24 05:50:03 -07:00