gcc.git
6 years agore PR target/81613 (FAIL: gfortran.dg/intrinsic_modulo_1.f90 -O3 -g execution...
Andreas Schwab [Mon, 18 Sep 2017 19:06:00 +0000 (19:06 +0000)]
re PR target/81613 (FAIL: gfortran.dg/intrinsic_modulo_1.f90   -O3 -g  execution test)

PR target/81613
* config/m68k/m68k.md (moveq feeding equality comparison): Check
that the registers are different.

From-SVN: r252949

6 years agoi386.c (fold_builtin_cpu): Add M_AMDFAM17H to processor_model and "amdfam17h" to...
Uros Bizjak [Mon, 18 Sep 2017 18:57:21 +0000 (20:57 +0200)]
i386.c (fold_builtin_cpu): Add M_AMDFAM17H to processor_model and "amdfam17h" to arch_names_table.

* config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
to processor_model and "amdfam17h" to arch_names_table.
* doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.

From-SVN: r252948

6 years agore PR c/82234 (__builtin_shuffle is not in the keyword index)
Jakub Jelinek [Mon, 18 Sep 2017 18:49:41 +0000 (20:49 +0200)]
re PR c/82234 (__builtin_shuffle is not in the keyword index)

PR c/82234
* doc/extend.texi: Add @findex entry for __builtin_shuffle.

From-SVN: r252947

6 years agoPR c++/82069 - ICE with lambda in template
Jason Merrill [Mon, 18 Sep 2017 17:41:07 +0000 (13:41 -0400)]
PR c++/82069 - ICE with lambda in template

* semantics.c (process_outer_var_ref): Check uses_template_parms
instead of any_dependent_template_arguments_p.

From-SVN: r252936

6 years agoMove computation of SLP_TREE_NUMBER_OF_VEC_STMTS
Richard Sandiford [Mon, 18 Sep 2017 15:50:03 +0000 (15:50 +0000)]
Move computation of SLP_TREE_NUMBER_OF_VEC_STMTS

Previously SLP_TREE_NUMBER_OF_VEC_STMTS was calculated while scheduling
an SLP tree after analysis, but sometimes it can be useful to know the
value during analysis too.  This patch moves the calculation to
vect_slp_analyze_node_operations instead.

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

gcc/
* tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
with a vec_info *.
* tree-vect-loop.c (vect_analyze_loop_operations): Update call
accordingly.
* tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
vect_schedule_slp_instance.
(vect_slp_analyze_operations): Replace parameters with a vec_info *.
Update call to vect_slp_analyze_node_operations.  Simplify return
value.
(vect_slp_analyze_bb_1): Update call accordingly.
(vect_schedule_slp_instance): Remove vectorization_factor parameter.
Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
(vect_schedule_slp): Update call accordingly.

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

6 years agoFix an SVE failure in the Fortran matmul* tests
Richard Sandiford [Mon, 18 Sep 2017 15:42:08 +0000 (15:42 +0000)]
Fix an SVE failure in the Fortran matmul* tests

The vectoriser was calling vect_get_smallest_scalar_type without
having proven that the type actually is a scalar.  This seems to
be the intended behaviour: the ultimate test of whether the type
is interesting (and hence scalar) is whether an associated vector
type exists, but this is only tested later.

The patch simply makes the function cope gracefully with non-scalar
inputs.

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

gcc/
* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
with types that aren't in fact scalar.

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

6 years agoInclude phis in SLP unrolling calculation
Richard Sandiford [Mon, 18 Sep 2017 15:39:21 +0000 (15:39 +0000)]
Include phis in SLP unrolling calculation

Without this we'd pick an unrolling factor based purely on longs,
ignoring the ints.  It's posssible that vect_get_smallest_scalar_type
should also handle shifts, but I think we'd still want this as a
belt-and-braces fix.

2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vect-slp.c (vect_record_max_nunits): New function,
split out from...
(vect_build_slp_tree_1): ...here.
(vect_build_slp_tree_2): Call it for phis too.

gcc/testsuite/
* gcc.dg/vect/slp-multitypes-13.c: New test.

From-SVN: r252933

6 years agoFix vectorizable_mask_load_store handling of invariant masks
Richard Sandiford [Mon, 18 Sep 2017 15:32:01 +0000 (15:32 +0000)]
Fix vectorizable_mask_load_store handling of invariant masks

vectorizable_mask_load_store was not passing the required mask type to
vect_get_vec_def_for_operand.  This doesn't matter for masks that are
defined in the loop, since their STMT_VINFO_VECTYPE will be what we need
anyway.  But it's not possible to tell which mask type the caller needs
when looking at an invariant scalar boolean.  As the comment above the
function says:

   In case OP is an invariant or constant, a new stmt that creates a vector def
   needs to be introduced.  VECTYPE may be used to specify a required type for
   vector invariant.

This fixes the attached testcase for SVE.

2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
to vect_get_vec_def_for_operand when getting the mask operand.

gcc/testsuite/
* gfortran.dg/vect/mask-store-1.f90: New test.

From-SVN: r252932

6 years agoFix type of bitstart in vectorizable_live_operation
Richard Sandiford [Mon, 18 Sep 2017 15:28:55 +0000 (15:28 +0000)]
Fix type of bitstart in vectorizable_live_operation

This patch changes the type of the multiplier applied by
vectorizable_live_operation from unsigned_type_node to bitsizetype,
which matches the type of TYPE_SIZE and is the type expected of a
BIT_FIELD_REF bit position.  This is shown by existing tests when
SVE is added.

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

gcc/
* tree-vect-loop.c (vectorizable_live_operation): Fix type of
bitstart.

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

6 years agoFix vectorizable_live_operation handling of vector booleans
Richard Sandiford [Mon, 18 Sep 2017 15:26:03 +0000 (15:26 +0000)]
Fix vectorizable_live_operation handling of vector booleans

vectorizable_live_operation needs to use BIT_FIELD_REF to extract one
element of a vector.  For a packed vector boolean type, the number of
bits to extract should be taken from TYPE_PRECISION rather than TYPE_SIZE.

This is shown by existing tests once SVE is added.

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

gcc/
* tree-vect-loop.c (vectorizable_live_operation): Fix element size
calculation for vector booleans.

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

6 years agoInvoke vectorizable_live_operation in a consistent way
Richard Sandiford [Mon, 18 Sep 2017 15:03:29 +0000 (15:03 +0000)]
Invoke vectorizable_live_operation in a consistent way

vect_transform_stmt calls vectorizable_live_operation for
each live statement in an SLP node, but vect_analyze_stmt
only called it the once.  This patch makes vect_analyze_stmt
consistent with vect_transform_stmt, which should be a bit
more robust, and also means that a later patch can use
slp_index when deciding validity.

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

gcc/
* tree-vect-stmts.c (can_vectorize_live_stmts): New function,
split out from...
(vect_transform_stmt): ...here.
(vect_analyze_stmt): Use it instead of calling
vectorizable_live_operation directly.

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

6 years agoomp-offload.c (oacc_xform_loop): Enable SIMD vectorization on non-SIMT targets in...
Cesar Philippidis [Mon, 18 Sep 2017 14:15:37 +0000 (07:15 -0700)]
omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on non-SIMT targets in acc vector loops.

gcc/
* omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
non-SIMT targets in acc vector loops.

From-SVN: r252928

6 years ago[ARC] Check the assembler for gdwar2 support.
Claudiu Zissulescu [Mon, 18 Sep 2017 13:56:01 +0000 (15:56 +0200)]
[ARC] Check the assembler for gdwar2 support.

gcc/
2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>

* configure.ac: Add arc and check if assembler supports gdwar2.
* configure: Regenerate.

From-SVN: r252927

6 years agore PR c++/45033 ("delete" does overload resolution for class operands, but shouldn't.)
Paolo Carlini [Mon, 18 Sep 2017 12:08:14 +0000 (12:08 +0000)]
re PR c++/45033 ("delete" does overload resolution for class operands, but shouldn't.)

2017-09-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/45033
* g++.dg/expr/delete1.C: New.

From-SVN: r252924

6 years agoUse built-in for std::make_integer_sequnce
Jonathan Wakely [Mon, 18 Sep 2017 12:02:19 +0000 (13:02 +0100)]
Use built-in for std::make_integer_sequnce

* include/std/utility (_Itup_cat, _Make_integer_sequence): Remove.
(_Build_index_tuple, make_integer_sequence): Use built-in to generate
pack expansion.

From-SVN: r252923

6 years agoPR libstdc++/71187 reimplement declval without add_rvalue_reference
Jonathan Wakely [Mon, 18 Sep 2017 11:40:10 +0000 (12:40 +0100)]
PR libstdc++/71187 reimplement declval without add_rvalue_reference

PR libstdc++/71187
* include/std/type_traits (__declval): New function to deduce return
type of declval.
(__declval_protector::_delegate): Remove.
(declval): Use __declval instead of add_rvalue_reference and
__declval_protector::__delegate.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error
lineno.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.

From-SVN: r252922

6 years agoUpdate checksums for isl-0.18.tar.bz2
Markus Trippelsdorf [Mon, 18 Sep 2017 11:25:13 +0000 (11:25 +0000)]
Update checksums for isl-0.18.tar.bz2

From-SVN: r252921

6 years agore PR tree-optimization/82220 (SPEC CPU2006 482.sphinx3 ~10% performance regression...
Richard Biener [Mon, 18 Sep 2017 10:10:31 +0000 (10:10 +0000)]
re PR tree-optimization/82220 (SPEC CPU2006 482.sphinx3 ~10% performance regression with trunk@250416)

2017-09-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82220
* tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
epilogue niters from the min_profitable_iters compute.

From-SVN: r252917

6 years agosem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for reference types...
Pierre-Marie de Rodat [Mon, 18 Sep 2017 09:52:11 +0000 (09:52 +0000)]
sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for reference types in the access-to-access case.

gcc/ada/

2017-09-18  Bob Duff  <duff@adacore.com>

* sem_ch4.adb (Complete_Object_Operation): Do not insert 'Access for
reference types in the access-to-access case.

2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>

* sem_attr.adb (Analyze_Access_Attribute): Move check for the presence
of the "aliased" keyword on the prefix from here to...
(Resolve_Attribute) <Attribute_Access>: ...here.  Remove useless call
to Check_No_Implicit_Aliasing.
* sinfo.ads (Non_Aliased_Prefix): Delete.
(Set_Non_Aliased_Prefix): Likewise.
* sinfo.adb (Non_Aliased_Prefix): Delete.
(Set_Non_Aliased_Prefix): Likewise.

2017-09-18  Bob Duff  <duff@adacore.com>

* exp_ch5.adb (Build_Formal_Container_Iteration,
Expand_Formal_Container_Element_Loop): Convert the container to the
root type before passing it to the iteration operations, so it will be
of the right type.

2017-09-18  Bob Duff  <duff@adacore.com>

* einfo.ads, validsw.ads, treepr.ads, sem_util.ads: Comment fixes.

2017-09-18  Bob Duff  <duff@adacore.com>

* exp_ch3.adb (Build_Array_Init_Proc): If validity checking is enabled,
and it's a bit-packed array, pass False to the Consider_IS parameter of
Needs_Simple_Initialization.

2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_ch6.adb (Check_Inline_Pragma): Link the newly generated spec to
the preexisting body.
* sem_prag.adb (Check_Inline_Always_Placement): New routine.
(Process_Inline): Verify the placement of pragma Inline_Always. The
pragma must now appear on the initial declaration of the related
subprogram.

2017-09-18  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Declarations): In ASIS mode,  At the end of the
declarative list in a subprogram body, analyze aspext specifications to
provide basic semantic information, because otherwise the aspect
specifications might only be snalyzed during expansion, when related
subprograms are generated.

2017-09-18  Bob Duff  <duff@adacore.com>

* exp_ch9.adb (Is_Simple_Barrier_Name): Follow Original_Node, in case
validity checks have rewritten the tree.

2017-09-18  Bob Duff  <duff@adacore.com>

* sem_util.adb: Comment fixes, and remove redundant Is_Itype check.

2017-09-18  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Save_References_In_Aggregate): When constructing a
qualified exxpression for an aggregate in a generic unit, verify that
the scope of the type is itself visible and not hidden, so that the
qualified expression is correctly resolved in any instance.

gcc/testsuite/

2017-09-18  Bob Duff  <duff@adacore.com>

* gnat.dg/validity_check.adb: New testcase.

2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>

* gnat.dg/overload.ads, gnat.dg/overload.adb: New testcase.

2017-09-18  Bob Duff  <duff@adacore.com>

* gnat.dg/tagged_prefix_call.adb: New testcase.

From-SVN: r252916

6 years agore PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766...
Jakub Jelinek [Mon, 18 Sep 2017 09:31:14 +0000 (11:31 +0200)]
re PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766.c fails)

PR target/82145
* config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
(ix86_init_pic_reg): Revert 2017-09-01 changes.

From-SVN: r252915

6 years agore PR target/81361 (broken exception handling at -O2)
Eric Botcazou [Mon, 18 Sep 2017 09:15:32 +0000 (09:15 +0000)]
re PR target/81361 (broken exception handling at -O2)

PR target/81361
* dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
switching to a new text section.

From-SVN: r252914

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 18 Sep 2017 09:11:02 +0000 (09:11 +0000)]
[multiple changes]

2017-09-18  Bob Duff  <duff@adacore.com>

* sem_ch4.adb (Analyze_Qualified_Expression): Give an error if the type
mark refers to the current instance. Set the type to Any_Type in that
case, to avoid later crashes.

2017-09-18  Ed Schonberg  <schonberg@adacore.com>

* exp_ch3.adb (Replace_Discriminant_References): New procedure,
subsidiary of Build_Assignment, used to handle the initialization code
for a mutable record component whose default value is an aggregate that
sets the values of the discriminants of the components.

2017-09-18  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/default_variants.adb: New testcase.

2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>

* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>: Mark
the entity as being volatile for an overlay that toggles the scalar
storage order.

2017-09-18  Fedor Rybin  <frybin@adacore.com>

* doc/gnat_ugn/gnat_utility_programs.rst: Document that gnattest
options -U main and --harness-only are not compatible.

From-SVN: r252913

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 18 Sep 2017 08:45:33 +0000 (08:45 +0000)]
[multiple changes]

2017-09-18  Hristian Kirtchev  <kirtchev@adacore.com>

* freeze.adb, sem_ch6.adb, sem_res.adb: Minor reformatting.

2017-09-18  Piotr Trojanek  <trojanek@adacore.com>

* einfo.ads (Is_Imported): Update comment, as this
routine also applies to constants.

2017-09-18  Yannick Moy  <moy@adacore.com>

* sem_util.adb (Find_Placement_In_State_Space): Allow generic package
holding state.

2017-09-18  Justin Squirek  <squirek@adacore.com>

* sem_prag.adb (Is_Non_Significant_Pragma_Reference): Change the
constant indication for Pragma_Linker_Section.

From-SVN: r252910

6 years agoAlternate fix for PR ada/71358
Bob Duff [Mon, 18 Sep 2017 08:43:37 +0000 (08:43 +0000)]
Alternate fix for PR ada/71358

2017-09-18  Bob Duff  <duff@adacore.com>

Alternate fix for PR ada/71358
* libgnat/g-comlin.adb (Getopt): Remove manual null access checks.
Instead, make a local copy of Config, and if it's null, allocate an
empty Command_Line_Configuration_Record, so we won't crash on null
pointer dereference.

From-SVN: r252909

6 years agoFix gcc.target/i386/pr81736-[34].c on 32-bit Solaris/x86 (PR target/81736)
Rainer Orth [Mon, 18 Sep 2017 08:25:11 +0000 (08:25 +0000)]
Fix gcc.target/i386/pr81736-[34].c on 32-bit Solaris/x86 (PR target/81736)

PR target/81736
* gcc.target/i386/pr81736-3.c: Add -mno-omit-leaf-frame-pointer.
* gcc.target/i386/pr81736-4.c: Likewise.

From-SVN: r252908

6 years agodownload_prerequisites (isl): Bump version to 0.18.
Richard Biener [Mon, 18 Sep 2017 07:42:32 +0000 (07:42 +0000)]
download_prerequisites (isl): Bump version to 0.18.

2017-09-18  Richard Biener  <rguenther@suse.de>

* download_prerequisites (isl): Bump version to 0.18.

From-SVN: r252907

6 years agographite-scop-detection.c (scop_detection::stmt_has_simple_data_ref): Simplify.
Richard Biener [Mon, 18 Sep 2017 07:38:12 +0000 (07:38 +0000)]
graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref): Simplify.

2017-09-18  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
Simplify.
(build_alias_set): Reject aliases with no access function.

From-SVN: r252906

6 years agore PR tree-optimization/79622 (Wrong code w/ -O2 -floop-nest-optimize)
Richard Biener [Mon, 18 Sep 2017 07:34:04 +0000 (07:34 +0000)]
re PR tree-optimization/79622 (Wrong code w/ -O2 -floop-nest-optimize)

2017-09-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/79622
* graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
handle PHIs.
(build_cross_bb_scalars_use): Likewise.

* gcc.dg/graphite/pr79622.c: New testcase.

From-SVN: r252905

6 years agoFix a typo in a comment (cgraph.c:cgraph_thunk_info)
Pierre-Marie de Rodat [Mon, 18 Sep 2017 06:42:23 +0000 (06:42 +0000)]
Fix a typo in a comment (cgraph.c:cgraph_thunk_info)

gcc/
* cgraph.h (cgraph_thunk_info): Fix a typo in a comment.

From-SVN: r252904

6 years agoMAINTAINERS: Add myself as a maintainer for the Ada front end.
Pierre-Marie de Rodat [Mon, 18 Sep 2017 06:34:45 +0000 (06:34 +0000)]
MAINTAINERS: Add myself as a maintainer for the Ada front end.

2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>

* MAINTAINERS: Add myself as a maintainer for the Ada front end.

From-SVN: r252903

6 years agoAdd myself as a maintainer for the Ada front end
Pierre-Marie de Rodat [Mon, 18 Sep 2017 06:31:52 +0000 (06:31 +0000)]
Add myself as a maintainer for the Ada front end

From-SVN: r252902

6 years ago[RS6000] PR81996, __builtin_return_address(0) fails
Alan Modra [Mon, 18 Sep 2017 02:25:10 +0000 (11:55 +0930)]
[RS6000] PR81996, __builtin_return_address(0) fails

rs6000_return_addr assumes that the stack link is at frame+0, which is
true for count>0.  For count==0, rs6000_return_addr is called with
frame==frame_pointer_rtx and the stack link is *not* at frame+0 if
-fstack-protector-all or -fsanitize=address because rs6000.h sets
FRAME_GROWS_DOWNWARD for those options.

PR target/81996
* gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
stack_pointer_rtx for count 0.  Update comments.  Break up
large rtl expression.

From-SVN: r252901

6 years agoDaily bump.
GCC Administrator [Mon, 18 Sep 2017 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r252900

6 years agoPR target/82196 correct choice of avx/sse stubs for -mcall-ms2sysv-xlogues
Daniel Santos [Sun, 17 Sep 2017 22:04:40 +0000 (22:04 +0000)]
PR target/82196 correct choice of avx/sse stubs for -mcall-ms2sysv-xlogues

gcc:
config/i386/i386.c: (xlogue_layout::STUB_NAME_MAX_LEN): Increase to 20
bytes.
(xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
(xlogue_layout::get_stub_name): Modify to select the appropairate sse
or avx version of the stub.

gcc/testsuite:
gcc.target/i386/pr82196-1.c: New test.
gcc.target/i386/pr82196-2.c: Likewise.

libgcc:
config/i386/i386-asm.h (PASTE2): New macro.
(ASMNAME): Modify to use PASTE2.
(MS2SYSV_STUB_PREFIX): New macro for isa prefix.
(MS2SYSV_STUB_BEGIN, MS2SYSV_STUB_END): New macros for stub headers.
config/i386/resms64.S: Rename to a header file, use MS2SYSV_STUB_BEGIN
instead of HIDDEN_FUNC and MS2SYSV_STUB_END instead of FUNC_END.
config/i386/resms64f.S: Likewise.
config/i386/resms64fx.S: Likewise.
config/i386/resms64x.S: Likewise.
config/i386/savms64.S: Likewise.
config/i386/savms64f.S: Likewise.
config/i386/avx_resms64.S: New file that only defines a macro and
includes it's corresponding header file.
config/i386/avx_resms64f.S: Likewise.
config/i386/avx_resms64fx.S: Likewise.
config/i386/avx_resms64x.S: Likewise.
config/i386/avx_savms64.S: Likewise.
config/i386/avx_savms64f.S: Likewise.
config/i386/sse_resms64.S: Likewise.
config/i386/sse_resms64f.S: Likewise.
config/i386/sse_resms64fx.S: Likewise.
config/i386/sse_resms64x.S: Likewise.
config/i386/sse_savms64.S: Likewise.
config/i386/sse_savms64f.S: Likewise.
config/i386/t-msabi: Modified to add avx and sse versions of stubs.

From-SVN: r252896

6 years agoi386: Update preferred stack boundary for leaf functions
H.J. Lu [Sun, 17 Sep 2017 21:11:04 +0000 (21:11 +0000)]
i386: Update preferred stack boundary for leaf functions

preferred_stack_boundary may not be the minimum stack alignment.  For
leaf functions without TLS access, max_used_stack_slot_alignment may be
smaller.  We should update preferred_stack_boundary for leaf functions.

gcc/

PR target/82166
* config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
compute the minimum stack alignment.  Also update preferred stack
boundary for leaf functions.

gcc/testsuite/

PR target/82166
* gcc.target/i386/pr82166.c: New test.

From-SVN: r252895

6 years agore PR fortran/82173 ([meta-bug] Parameterized derived type errors)
Paul Thomas [Sun, 17 Sep 2017 18:24:37 +0000 (18:24 +0000)]
re PR fortran/82173 ([meta-bug] Parameterized derived type errors)

2017-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82173
* decl.c (gfc_get_pdt_instance): Use the component initializer
expression for the default, rather than the parameter value.
* resolve.c (resolve_pdt): New function.
(resolve_symbol): Call it. Remove false error, prohibiting
deferred type parameters for dummy arguments.

PR fortran/60483
* primary.c (gfc_match_varspec): If the type of an associate
name is unknown and yet there is a match, try resolving the
target expression and using its type.

2017-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82173
* gfortran.dg/pdt_1.f03 : Eliminate spurious error checks.
* gfortran.dg/pdt_2.f03 : The same.
* gfortran.dg/pdt_3.f03 : The same.
* gfortran.dg/pdt_4.f03 : Add 'modtype' and two new errors in
module 'bad_vars'. Add error concerning assumed parameters and
save attribute.
* gfortran.dg/pdt_11.f03 : New test.

PR fortran/60483
* gfortran.dg/associate_9.f90 : Remove XFAIL and change to run.
* gfortran.dg/associate_25.f90 : New test.
* gfortran.dg/pdt_12.f03 : New test.

From-SVN: r252894

6 years agoFix gccbrig documentation build
Thomas Schwinge [Sun, 17 Sep 2017 12:11:40 +0000 (14:11 +0200)]
Fix gccbrig documentation build

gcc/brig/
* Make-lang.in (GO_TEXI_FILES): Rename to...
(BRIG_TEXI_FILES): ... this.
(doc/gccbrig.info, doc/gccbrig.dvi, doc/gccbrig.pdf, brig.info)
(brig.srcinfo, brig.man, brig.srcman, brig.install-man)
($(DESTDIR)$(man1dir)/$(GCCBRIG_INSTALL_NAME)$(man1ext)):
Uncomment/enable targets.
(gccbrig.pod): New target.
* gccbrig.texi: New file.

From-SVN: r252893

6 years agoDaily bump.
GCC Administrator [Sun, 17 Sep 2017 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r252892

6 years agoPR82228: Move ncopies calculation in vectorizable_live_operation
Richard Sandiford [Sat, 16 Sep 2017 20:39:01 +0000 (20:39 +0000)]
PR82228: Move ncopies calculation in vectorizable_live_operation

This should have been after the early exit for non-vectorised statements.

2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/82228
* tree-vect-loop.c (vectorizable_live_operation): Move initialization
of ncopies.

From-SVN: r252888

6 years agoa-intnam__rtems.ads: Update copyright date.
Eric Botcazou [Sat, 16 Sep 2017 17:31:22 +0000 (17:31 +0000)]
a-intnam__rtems.ads: Update copyright date.

* libgnarl/a-intnam__rtems.ads: Update copyright date.
* libgnarl/s-interr__hwint.adb: Likewise.
* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
* libgnarl/s-osinte__rtems.adb: Likewise.
* libgnarl/s-osinte__rtems.ads: Likewise.

From-SVN: r252877

6 years agoUse -fsched-pressure and -fomit-frame-pointer
Chung-Ju Wu [Sat, 16 Sep 2017 16:23:23 +0000 (16:23 +0000)]
Use -fsched-pressure and -fomit-frame-pointer
in nds32_option_optimization_table.

gcc/
* common/config/nds32/nds32-common.c
(nds32_option_optimization_table): Refine formatting.
(nds32_option_optimization_table): Use -fsched-pressure and
-fomit-frame-pointer for specific optimization level.

From-SVN: r252876

6 years agoRefine formatting and comments.
Chung-Ju Wu [Sat, 16 Sep 2017 14:50:07 +0000 (14:50 +0000)]
Refine formatting and comments.

gcc/
* config/nds32/nds32.c: Refine formatting and comments.
* config/nds32/nds32.h: Likewise.
* config/nds32/nds32.md: Likewise.
* config/nds32/nds32-cost.c: Likewise.
* config/nds32/nds32-isr.c: Likewise.
* config/nds32/nds32-md-auxiliary.c: Likewise.
* config/nds32/nds32-multiple.md: Likewise.
* config/nds32/nds32-predicates.c: Likewise.

From-SVN: r252874

6 years agoFix condition folding in c_parser_omp_for_loop
Tom de Vries [Sat, 16 Sep 2017 13:11:43 +0000 (13:11 +0000)]
Fix condition folding in c_parser_omp_for_loop

2017-09-16  Tom de Vries  <tom@codesourcery.com>

PR c/81875
* c-parser.c (c_parser_omp_for_loop): Fold only operands of cond, not
cond itself.

* testsuite/libgomp.c-c++-common/pr81875.c: New test.

From-SVN: r252873

6 years agoDaily bump.
GCC Administrator [Sat, 16 Sep 2017 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r252870

6 years agosyscall: fixes for Solaris
Ian Lance Taylor [Fri, 15 Sep 2017 22:57:23 +0000 (22:57 +0000)]
syscall: fixes for Solaris

    Patch by Rainer Orth.

    Reviewed-on: https://go-review.googlesource.com/64170

From-SVN: r252866

6 years agocompiler: call error_statement for fallthrough in last case
Ian Lance Taylor [Fri, 15 Sep 2017 21:25:17 +0000 (21:25 +0000)]
compiler: call error_statement for fallthrough in last case

    It is possible to do this check in backend, by walking the
    block and check whether the last statement is a goto. But it
    seems easier to do it in the frontend, where it can simply use
    is_fallthrough.

    Reviewed-on: https://go-review.googlesource.com/63690

From-SVN: r252851

6 years agoAdd support for -std=c++2a.
Andrew Sutton [Fri, 15 Sep 2017 21:16:37 +0000 (21:16 +0000)]
Add support for -std=c++2a.

* c-common.h (cxx_dialect): Add cxx2a as a dialect.
* opt.c: Add options for -std=c++2a and -std=gnu++2a.
* c-opts.c (set_std_cxx2a): New.
(c_common_handle_option): Set options when -std=c++2a is enabled.
(c_common_post_options): Adjust comments.
(set_std_cxx14, set_std_cxx17): Likewise.

* doc/cpp.texi (__cplusplus): Document value for -std=c++2a
or -std=gnu+2a.
* doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.

* lib/target-supports.exp (check_effective_target_c++17): Return
1 also if check_effective_target_c++2a.
(check_effective_target_c++17_down): New.
(check_effective_target_c++2a_only): New.
(check_effective_target_c++2a): New.
* g++.dg/cpp2a/cplusplus.C: New.

* include/cpplib.h (c_lang): Add CXX2A and GNUCXX2A.
* init.c (lang_defaults): Add rows for CXX2A and GNUCXX2A.
(cpp_init_builtins): Set __cplusplus to 201709L for C++2a.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r252850

6 years agocompiler: check error expression in Array_type::get_backend_length
Ian Lance Taylor [Fri, 15 Sep 2017 21:07:54 +0000 (21:07 +0000)]
compiler: check error expression in Array_type::get_backend_length

    Otherwise, a zero length is created in the backend and the
    backend doesn't know there is an error.

    Reviewed-on: https://go-review.googlesource.com/61610

From-SVN: r252849

6 years agore PR target/82066 (#pragma GCC target documentation does not say it is implemented...
Steve Ellcey [Fri, 15 Sep 2017 20:55:52 +0000 (20:55 +0000)]
re PR target/82066 (#pragma GCC target documentation does not say it is implemented for aarch64)

2017-09-15  Steve Ellcey  <sellcey@cavium.com>

PR target/82066
* doc/extend.texi (Common Function Attributes): Add
references to ARM, AArch64, and S/390 specific attributes.
(Function Specific Option Pragmas): Add AArch64 and S/390
        to list of back ends that support the target pragma.

From-SVN: r252848

6 years agoImplement C11 excess precision semantics for conversions (PR c/82071).
Joseph Myers [Fri, 15 Sep 2017 20:49:02 +0000 (21:49 +0100)]
Implement C11 excess precision semantics for conversions (PR c/82071).

C11 semantics for excess precision (from N1531) are that an implicit
conversion (from the usual arithmetic conversions, not by assignment)
from integer to floating point has a result in the corresponding
evaluation format of that floating-point type, so possibly with excess
precision (whereas a cast or conversion by assignment from integer to
floating point must produce a value without excess range or precision,
as always).  This patch makes GCC support those semantics if
flag_isoc11 (which in turn means that conditional expressions need to
support generating a result with excess precision even if neither
operand had excess precision).

C99 is less than entirely clear in this regard, but my reading as
outlined at <https://gcc.gnu.org/ml/gcc-patches/2008-11/msg00105.html>
is that the results of conversions from integer to floating-point
types are always expected to be representable in the target type
without excess precision, and this patch conservatively keeps these
semantics for pre-C11 (i.e. if an older standard is explicitly
selected).

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

PR c/82071

gcc/c:
* c-typeck.c (ep_convert_and_check): Just call convert_and_check
for C11.
(build_conditional_expr): For C11, generate result with excess
precision when one argument is an integer and the other is of a
type using excess precision.

gcc/testsuite:
* gcc.target/i386/excess-precision-8.c: New test.

From-SVN: r252847

6 years agore PR c++/64644 ("warning: anonymous union with no members" should be an error with...
Manuel López-Ibáñez [Fri, 15 Sep 2017 19:22:35 +0000 (19:22 +0000)]
re PR c++/64644 ("warning: anonymous union with no members" should be an error with -pedantic-errors)

/cp
2017-09-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
    Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/64644
* decl2.c (finish_anon_union): Complain about "anonymous union with
no members" with a pedwarn.

/testsuite
2017-09-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
    Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/64644
* g++.dg/other/anon-union4.C: New.
* g++.old-deja/g++.law/union4.C: Adjust.
* g++.old-deja/g++.other/anon1.C: Likewise.

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

6 years ago[C++ PATCH] Renames/adjustments of 1z to 17
Nathan Sidwell [Fri, 15 Sep 2017 18:31:56 +0000 (18:31 +0000)]
[C++ PATCH] Renames/adjustments of 1z to 17

https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01051.html
ReviewedBy: Sandra Loosemore <sandra@codesourcery.com>
* doc/standards.texi: Fix C++17 description.  Update URLs for
C++11 & 14.

From-SVN: r252834

6 years ago* MAINTAINERS: Remove myself as a vxworks maintainer.
Nathan Sidwell [Fri, 15 Sep 2017 17:34:43 +0000 (17:34 +0000)]
* MAINTAINERS: Remove myself as a vxworks maintainer.

From-SVN: r252833

6 years agocommon.opt (Wcast-align=strict): New warning option.
Bernd Edlinger [Fri, 15 Sep 2017 17:21:50 +0000 (17:21 +0000)]
common.opt (Wcast-align=strict): New warning option.

2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * common.opt (Wcast-align=strict): New warning option.
        * doc/invoke.texi: Document -Wcast-align=strict.

c:
2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-typeck.c (build_c_cast): Implement -Wcast-align=strict.

cp:
2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * typeck.c (build_reinterpret_cast_1,
        build_const_cast_1): Implement -Wcast-align=strict.

testsuite:
2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-c++-common/Wcast-align.c: New test.

From-SVN: r252832

6 years agoc-pragma.c (handle_pragma_scalar_storage_order): Expand on error message for non...
Eric Botcazou [Fri, 15 Sep 2017 17:11:47 +0000 (17:11 +0000)]
c-pragma.c (handle_pragma_scalar_storage_order): Expand on error message for non-uniform endianness and issue a warning in C++.

* c-pragma.c (handle_pragma_scalar_storage_order): Expand on error
message for non-uniform endianness and issue a warning in C++.

From-SVN: r252831

6 years agore PR c++/78648 (ICE on invalid C++ code on x86_64-linux-gnu (Segmentation fault...
Paolo Carlini [Fri, 15 Sep 2017 16:31:15 +0000 (16:31 +0000)]
re PR c++/78648 (ICE on invalid C++ code on x86_64-linux-gnu (Segmentation fault, contains_struct_check))

2017-09-13  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/78648
* g++.dg/cpp0x/lambda/lambda-ice21.C: New.

From-SVN: r252829

6 years agoAdd comments to struct cgraph_thunk_info
Pierre-Marie de Rodat [Fri, 15 Sep 2017 16:20:21 +0000 (16:20 +0000)]
Add comments to struct cgraph_thunk_info

This commit adds comments to fields in the cgraph_thunk_info structure
declaration from cgraph.h.  They will hopefully answer questions that
people like myself can ask while discovering the thunk machinery.  I
also made an assertion stricter in cgraph_node::create_thunk.

Bootsrapped and regtested on x86_64-linux.

gcc/

* cgraph.h (cgraph_thunk_info): Add comments.
* cgraph.c (cgraph_node::create_thunk): Adjust comment, make
assert for VIRTUAL_* arguments stricter.

From-SVN: r252828

6 years agore PR tree-optimization/71026 (Missing division optimizations)
Jackson Woodruff [Fri, 15 Sep 2017 16:17:55 +0000 (16:17 +0000)]
re PR tree-optimization/71026 (Missing division optimizations)

2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>

PR tree-optimization/71026
* match.pd: Move RDIV patterns from fold-const.c
* fold-const.c (distribute_real_division): Removed.
(fold_binary_loc): Remove calls to distribute_real_divison.

PR tree-optimization/71026
* gcc/testsuire/gcc.dg/fold-div-1.c: Use -O1.

From-SVN: r252827

6 years agoinvoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z...
Jakub Jelinek [Fri, 15 Sep 2017 16:15:46 +0000 (18:15 +0200)]
invoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z as deprecated.

* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
c++1z and gnu++1z as deprecated.  Change other references to
-std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
Change -Wc++1z-compat to -Wc++17-compat.
* doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
* dwarf2out.c (highest_c_language): Handle C++17.
(gen_compile_unit_die): Likewise.
c-family/
* c.opt (Wc++1z-compat): Change from option to undocumented alias.
(Wc++17-compat): Change from undocumented alias to option.
(Wnoexcept-type): Enable by Wc++17-compat instead of Wc++1z-compat,
change C++1z to C++17 in description.
(std=c++1z, std=gnu++1z): Change from option to undocumented
deprecated alias.
(std=c++17, std=gnu++17): Change from undocumented alias to option.
Adjust description.
* c-common.h (enum cxx_dialect): Rename cxx1z to cxx17.
* c-opts.c (set_std_cxx1z): Rename to ...
(set_std_cxx17): ... this.
(c_common_handle_option): Rename OPT_std_c__1z to OPT_std_c__17
and OPT_std_gnu__1z to OPT_std_gnu__17.  Adjust set_std_cxx1z
caller.
(c_common_post_options): Use cxx17 instead of cxx1z.  Adjust
comments.
cp/
* decl.c (redeclaration_error_message): Use cxx17 instead of cxx1z,
adjust diagnostics refering to C++1z or -std=gnu++1z or -std=c++1z
to C++17 or -std=gnu++17 or -std=c++17.  Adjust comments.
(cxx_init_decl_processing, next_initializable_field,
is_direct_enum_init, check_initializer, cp_finish_decl,
mark_inline_variable, grokdeclarator, grokparms, xref_basetypes,
finish_function): Likewise.
* cp-tree.h (DECL_INLINE_VAR_P): Likewise.
* pt.c (mark_template_parm, convert_nontype_argument,
instantiate_class_template_1, type_unification_real, unify,
get_partial_spec_bindings, dependent_type_p_r): Likewise.
* typeck.c (cp_build_unary_op): Likewise.
* constexpr.c (var_in_maybe_constexpr_fn): Likewise.
* call.c (build_user_type_conversion_1, build_over_call,
build_special_member_call): Likewise.
* lambda.c (begin_lambda_type): Likewise.
* typeck2.c (process_init_constructor_record): Likewise.
* class.c (build_base_field, finalize_literal_type_property,
explain_non_literal_class): Likewise.
* parser.c (cp_parser_diagnose_invalid_type_name,
cp_parser_primary_expression, cp_parser_lambda_introducer,
cp_parser_lambda_declarator_opt, cp_parser_selection_statement,
cp_convert_range_for, cp_parser_perform_range_for_lookup,
cp_parser_decomposition_declaration, cp_parser_linkage_specification,
cp_parser_static_assert, cp_parser_simple_type_specifier,
cp_parser_namespace_definition, cp_parser_using_declaration,
cp_parser_init_declarator, cp_parser_type_parameter_key,
cp_parser_exception_specification_opt, cp_parser_std_attribute_spec,
cp_parser_constructor_declarator_p): Likewise.
* mangle.c (struct globals): Rename need_cxx1z_warning to
need_cxx17_warning.
(write_exception_spec, start_mangling, mangle_decl): Likewise.
* Make-lang.in (check-c++1z): Rename to check-c++17, depend on
it.
(check-c++17): New goal.  Use 17 instead of 1z.
(check-c++-all): Use 17 instead of 1z.
testsuite/
* lib/g++-dg.exp (g++-dg-runtest): Use 17 instead of 1z.
* lib/target-supports.exp (check_effective_target_c++14): Use
check_effective_target_c++17 instead of check_effective_target_c++1z.
(check_effective_target_c++14_down): Likewise.
(check_effective_target_c++1z_only): Rename to ...
(check_effective_target_c++17_only): ... this.
(check_effective_target_c++1z): Rename to ...
(check_effective_target_c++17): ... this.
* g++.dg/debug/dwarf2/inline-var-1.C: Use -std=c++17 or -std=gnu++17
instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead of c++1z
and c++17_only instead of c++1z_only.  Adjust expected diagnostics
and comments refering to 1z to 17.
* g++.dg/debug/dwarf2/inline-var-2.C: Likewise.
* g++.dg/template/partial5.C: Likewise.
* g++.dg/template/nontype8.C: Likewise.
* g++.dg/cpp1z/noexcept-type5.C: Likewise.
* g++.dg/cpp1z/nontype3a.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda4.C: Likewise.
* g++.dg/cpp1z/noexcept-type16.C: Likewise.
* g++.dg/cpp1z/class-deduction32.C: Likewise.
* g++.dg/cpp1z/pr78771.C: Likewise.
* g++.dg/cpp1z/elide1.C: Likewise.
* g++.dg/cpp1z/fold3.C: Likewise.
* g++.dg/cpp1z/class-deduction2.C: Likewise.
* g++.dg/cpp1z/noexcept-type12.C: Likewise.
* g++.dg/cpp1z/inline-var2.C: Likewise.
* g++.dg/cpp1z/eval-order2.C: Likewise.
* g++.dg/cpp1z/decomp21.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda11.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda9.C: Likewise.
* g++.dg/cpp1z/utf8-neg.C: Likewise.
* g++.dg/cpp1z/class-deduction41.C: Likewise.
* g++.dg/cpp1z/class-deduction23.C: Likewise.
* g++.dg/cpp1z/nodiscard3.C: Likewise.
* g++.dg/cpp1z/static_assert-nomsg.C: Likewise.
* g++.dg/cpp1z/noexcept-type9.C: Likewise.
* g++.dg/cpp1z/class-deduction21.C: Likewise.
* g++.dg/cpp1z/range-for1.C: Likewise.
* g++.dg/cpp1z/init-statement4.C: Likewise.
* g++.dg/cpp1z/udlit-utf8char.C: Likewise.
* g++.dg/cpp1z/decomp30.C: Likewise.
* g++.dg/cpp1z/class-deduction39.C: Likewise.
* g++.dg/cpp1z/register2.C: Likewise.
* g++.dg/cpp1z/decomp9.C: Likewise.
* g++.dg/cpp1z/regress1.C: Likewise.
* g++.dg/cpp1z/direct-enum-init1.C: Likewise.
* g++.dg/cpp1z/class-deduction30.C: Likewise.
* g++.dg/cpp1z/abbrev2.C: Likewise.
* g++.dg/cpp1z/nontype-auto6.C: Likewise.
* g++.dg/cpp1z/regress2.C: Likewise.
* g++.dg/cpp1z/decomp16.C: Likewise.
* g++.dg/cpp1z/bool-increment1.C: Likewise.
* g++.dg/cpp1z/aligned-new1.C: Likewise.
* g++.dg/cpp1z/decomp3.C: Likewise.
* g++.dg/cpp1z/register1.C: Likewise.
* g++.dg/cpp1z/namespace-attribs.C: Likewise.
* g++.dg/cpp1z/class-deduction1.C: Likewise.
* g++.dg/cpp1z/decomp10.C: Likewise.
* g++.dg/cpp1z/constexpr-if11.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda10.C: Likewise.
* g++.dg/cpp1z/decomp27.C: Likewise.
* g++.dg/cpp1z/noexcept-type2.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
* g++.dg/cpp1z/class-deduction9.C: Likewise.
* g++.dg/cpp1z/attributes-enum-1.C: Likewise.
* g++.dg/cpp1z/decomp11.C: Likewise.
* g++.dg/cpp1z/aligned-new3.C: Likewise.
* g++.dg/cpp1z/utf8-2.C: Likewise.
* g++.dg/cpp1z/lambda-this3.C: Likewise.
* g++.dg/cpp1z/decomp-constexpr1.C: Likewise.
* g++.dg/cpp1z/byte1.C: Likewise.
* g++.dg/cpp1z/nontype-auto9.C: Likewise.
* g++.dg/cpp1z/aggr-base4.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda1.C: Likewise.
* g++.dg/cpp1z/nontype-auto3.C: Likewise.
* g++.dg/cpp1z/utf8-2a.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda7.C: Likewise.
* g++.dg/cpp1z/aggr-base6.C: Likewise.
* g++.dg/cpp1z/cplusplus.C: Likewise.
* g++.dg/cpp1z/class-deduction20.C: Likewise.
* g++.dg/cpp1z/aggr-base2.C: Likewise.
* g++.dg/cpp1z/class-deduction6.C: Likewise.
* g++.dg/cpp1z/noexcept-type3.C: Likewise.
* g++.dg/cpp1z/class-deduction31.C: Likewise.
* g++.dg/cpp1z/class-deduction25.C: Likewise.
* g++.dg/cpp1z/class-deduction18.C: Likewise.
* g++.dg/cpp1z/fold9.C: Likewise.
* g++.dg/cpp1z/noexcept-type8.C: Likewise.
* g++.dg/cpp1z/abbrev1.C: Likewise.
* g++.dg/cpp1z/constexpr-if10.C: Likewise.
* g++.dg/cpp1z/utf8.C: Likewise.
* g++.dg/cpp1z/noexcept-type7.C: Likewise.
* g++.dg/cpp1z/aggr-base3.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda8.C: Likewise.
* g++.dg/cpp1z/init-statement2.C: Likewise.
* g++.dg/cpp1z/nontype-auto4.C: Likewise.
* g++.dg/cpp1z/constexpr-if12.C: Likewise.
* g++.dg/cpp1z/class-deduction40.C: Likewise.
* g++.dg/cpp1z/nontype3.C: Likewise.
* g++.dg/cpp1z/class-deduction14.C: Likewise.
* g++.dg/cpp1z/fold7.C: Likewise.
* g++.dg/cpp1z/nontype2.C: Likewise.
* g++.dg/cpp1z/class-deduction15.C: Likewise.
* g++.dg/cpp1z/nested-namespace-def1.C: Likewise.
* g++.dg/cpp1z/class-deduction13.C: Likewise.
* g++.dg/cpp1z/aligned-new7.C: Likewise.
* g++.dg/cpp1z/noexcept-type1.C: Likewise.
* g++.dg/cpp1z/nontype1.C: Likewise.
* g++.dg/cpp1z/init-statement5.C: Likewise.
* g++.dg/cpp1z/nontype-auto2.C: Likewise.
* g++.dg/cpp1z/decomp17.C: Likewise.
* g++.dg/cpp1z/fold4.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda2.C: Likewise.
* g++.dg/cpp1z/fold7a.C: Likewise.
* g++.dg/cpp1z/nontype-auto5.C: Likewise.
* g++.dg/cpp1z/init-statement7.C: Likewise.
* g++.dg/cpp1z/aggr-base5.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda5.C: Likewise.
* g++.dg/cpp1z/pr79143.C: Likewise.
* g++.dg/cpp1z/class-deduction38.C: Likewise.
* g++.dg/cpp1z/nontype-auto8.C: Likewise.
* g++.dg/cpp1z/class-deduction12.C: Likewise.
* g++.dg/cpp1z/decomp20.C: Likewise.
* g++.dg/cpp1z/class-deduction22.C: Likewise.
* g++.dg/cpp1z/class-deduction29.C: Likewise.
* g++.dg/cpp1z/class-deduction8.C: Likewise.
* g++.dg/cpp1z/class-deduction43.C: Likewise.
* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
* g++.dg/cpp1z/fold8.C: Likewise.
* g++.dg/cpp1z/init-statement3.C: Likewise.
* g++.dg/cpp1z/nontype-auto10.C: Likewise.
* g++.dg/cpp1z/class-deduction36.C: Likewise.
* g++.dg/cpp1z/noexcept-type17.C: Likewise.
* g++.dg/cpp1z/fallthrough1.C: Likewise.
* g++.dg/cpp1z/fold1.C: Likewise.
* g++.dg/cpp1z/class-deduction26.C: Likewise.
* g++.dg/cpp1z/fold-ice1.C: Likewise.
* g++.dg/cpp1z/fold5.C: Likewise.
* g++.dg/cpp1z/class-deduction34.C: Likewise.
* g++.dg/cpp1z/noexcept-type6.C: Likewise.
* g++.dg/cpp1z/class-deduction7.C: Likewise.
* g++.dg/cpp1z/class-deduction16.C: Likewise.
* g++.dg/cpp1z/class-deduction10.C: Likewise.
* g++.dg/cpp1z/eval-order3.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda13.C: Likewise.
* g++.dg/cpp1z/aggr-base2a.C: Likewise.
* g++.dg/cpp1z/nontype-auto1.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda3.C: Likewise.
* g++.dg/cpp1z/nontype-auto7.C: Likewise.
* g++.dg/cpp1z/decomp15.C: Likewise.
* g++.dg/cpp1z/noexcept-type4.C: Likewise.
* g++.dg/cpp1z/fold-mangle.C: Likewise.
* g++.dg/cpp1z/class-deduction35.C: Likewise.
* g++.dg/cpp1z/decomp4.C: Likewise.
* g++.dg/cpp1z/class-deduction42.C: Likewise.
* g++.dg/cpp1z/init-statement8.C: Likewise.
* g++.dg/cpp1z/inline-var1a.C: Likewise.
* g++.dg/cpp1z/init-statement6.C: Likewise.
* g++.dg/cpp1z/class-deduction17.C: Likewise.
* g++.dg/cpp1z/class-deduction28.C: Likewise.
* g++.dg/cpp1z/class-deduction27.C: Likewise.
* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
* g++.dg/cpp1z/attributes-enum-1a.C: Likewise.
* g++.dg/cpp1z/class-deduction11.C: Likewise.
* g++.dg/cpp1z/constexpr-lambda12.C: Likewise.
* g++.dg/cpp1z/init-statement9.C: Likewise.
* g++.dg/cpp1z/class-deduction19.C: Likewise.
* g++.dg/cpp1z/class-deduction5.C: Likewise.
* g++.dg/cpp1z/fold2.C: Likewise.
* g++.dg/cpp1z/class-deduction33.C: Likewise.
* g++.dg/cpp1z/class-deduction24.C: Likewise.
* g++.dg/cpp1z/aggr-base1.C: Likewise.
* g++.dg/cpp1z/fold6.C: Likewise.
* g++.dg/cpp1z/decomp12.C: Likewise.
* g++.dg/cpp1z/class-deduction4.C: Likewise.
* g++.dg/cpp1z/inline-var1.C: Likewise.
* g++.dg/cpp1z/aligned-new2.C: Likewise.
* g++.dg/cpp1z/class-deduction3.C: Likewise.
* g++.dg/other/error3.C: Likewise.
* g++.dg/init/new25.C: Likewise.
* g++.dg/init/new13.C: Likewise.
* g++.dg/tls/diag-2.C: Likewise.
* g++.dg/tls/diag-4.C: Likewise.
* g++.dg/opt/noreturn-1.C: Likewise.
* g++.dg/eh/async-unwind2.C: Likewise.
* g++.dg/eh/spec9.C: Likewise.
* g++.dg/eh/spec7.C: Likewise.
* g++.dg/eh/template1.C: Likewise.
* g++.dg/eh/cond4.C: Likewise.
* g++.dg/eh/pr41819.C: Likewise.
* g++.dg/eh/delete1.C: Likewise.
* g++.dg/eh/spec3.C: Likewise.
* g++.dg/eh/forced4.C: Likewise.
* g++.dg/eh/spec2.C: Likewise.
* g++.dg/eh/shadow1.C: Likewise.
* g++.dg/eh/pr38662.C: Likewise.
* g++.dg/eh/ehopt1.C: Likewise.
* g++.dg/eh/spec8.C: Likewise.
* g++.dg/eh/init-temp2.C: Likewise.
* g++.dg/rtti/crash3.C: Likewise.
* g++.dg/warn/Wreturn-type-3.C: Likewise.
* g++.dg/warn/register-parm-1.C: Likewise.
* g++.dg/warn/register-var-2.C: Likewise.
* g++.dg/gcov/gcov-7.C: Likewise.
* g++.dg/tree-ssa/pr45605.C: Likewise.
* g++.dg/cpp/pr23827_cxx98_neg.C: Likewise.
* g++.dg/lookup/exception1.C: Likewise.
* g++.dg/ubsan/pr79589.C: Likewise.
* g++.dg/tm/pr47340.C: Likewise.
* g++.dg/tm/pr46567.C: Likewise.
* g++.dg/expr/bitfield5.C: Likewise.
* g++.dg/expr/bool1.C: Likewise.
* g++.dg/expr/lval3.C: Likewise.
* g++.dg/expr/lval4.C: Likewise.
* g++.dg/expr/bitfield4.C: Likewise.
* g++.dg/expr/bitfield6.C: Likewise.
* g++.dg/expr/bool3.C: Likewise.
* g++.dg/ext/has_nothrow_constructor.C: Likewise.
* g++.dg/ext/has_nothrow_copy-7.C: Likewise.
* g++.dg/ext/has_nothrow_copy-1.C: Likewise.
* g++.dg/ext/has_nothrow_copy-2.C: Likewise.
* g++.dg/ext/has_nothrow_copy-4.C: Likewise.
* g++.dg/ext/has_nothrow_copy-5.C: Likewise.
* g++.dg/ext/has_nothrow_copy-6.C: Likewise.
* g++.dg/ext/has_nothrow_assign.C: Likewise.
* g++.dg/parse/register1.C: Likewise.
* g++.dg/parse/error15.C: Likewise.
* g++.dg/parse/linkage2.C: Likewise.
* g++.dg/concepts/intro2.C: Likewise.
* g++.dg/concepts/class.C: Likewise.
* g++.dg/concepts/traits1.C: Likewise.
* g++.dg/concepts/req5.C: Likewise.
* g++.dg/concepts/var-concept5.C: Likewise.
* g++.dg/concepts/fn-concept2.C: Likewise.
* g++.dg/concepts/traits2.C: Likewise.
* g++.dg/concepts/placeholder2.C: Likewise.
* g++.dg/concepts/class6.C: Likewise.
* g++.dg/concepts/memtmpl1.C: Likewise.
* g++.dg/concepts/friend2.C: Likewise.
* g++.dg/concepts/template-parm3.C: Likewise.
* g++.dg/concepts/template-parm10.C: Likewise.
* g++.dg/concepts/explicit-spec1.C: Likewise.
* g++.dg/concepts/explicit-spec3.C: Likewise.
* g++.dg/concepts/var-templ2.C: Likewise.
* g++.dg/concepts/intro5.C: Likewise.
* g++.dg/concepts/deduction-constraint1.C: Likewise.
* g++.dg/concepts/iconv1.C: Likewise.
* g++.dg/concepts/constrained-parm.C: Likewise.
* g++.dg/concepts/template-template-parm1.C: Likewise.
* g++.dg/concepts/var-concept3.C: Likewise.
* g++.dg/concepts/class3.C: Likewise.
* g++.dg/concepts/memfun2.C: Likewise.
* g++.dg/concepts/req1.C: Likewise.
* g++.dg/concepts/disjunction1.C: Likewise.
* g++.dg/concepts/req17.C: Likewise.
* g++.dg/concepts/pr65848.C: Likewise.
* g++.dg/concepts/placeholder4.C: Likewise.
* g++.dg/concepts/decl-diagnose.C: Likewise.
* g++.dg/concepts/intro7.C: Likewise.
* g++.dg/concepts/pr68683.C: Likewise.
* g++.dg/concepts/partial-spec4.C: Likewise.
* g++.dg/concepts/template-parm5.C: Likewise.
* g++.dg/concepts/explicit-inst1.C: Likewise.
* g++.dg/concepts/class-deduction1.C: Likewise.
* g++.dg/concepts/class1.C: Likewise.
* g++.dg/concepts/req15.C: Likewise.
* g++.dg/concepts/memfun.C: Likewise.
* g++.dg/concepts/pr68434.C: Likewise.
* g++.dg/concepts/inherit-ctor4.C: Likewise.
* g++.dg/concepts/partial-spec6.C: Likewise.
* g++.dg/concepts/var-templ1.C: Likewise.
* g++.dg/concepts/template-parm8.C: Likewise.
* g++.dg/concepts/explicit-inst3.C: Likewise.
* g++.dg/concepts/class4.C: Likewise.
* g++.dg/concepts/req6.C: Likewise.
* g++.dg/concepts/fn8.C: Likewise.
* g++.dg/concepts/class5.C: Likewise.
* g++.dg/concepts/placeholder5.C: Likewise.
* g++.dg/concepts/req16.C: Likewise.
* g++.dg/concepts/req10.C: Likewise.
* g++.dg/concepts/var-concept2.C: Likewise.
* g++.dg/concepts/auto3.C: Likewise.
* g++.dg/concepts/generic-fn-err.C: Likewise.
* g++.dg/concepts/pr65552.C: Likewise.
* g++.dg/concepts/partial-concept-id2.C: Likewise.
* g++.dg/concepts/fn1.C: Likewise.
* g++.dg/concepts/partial-spec.C: Likewise.
* g++.dg/concepts/template-parm12.C: Likewise.
* g++.dg/concepts/diagnostic1.C: Likewise.
* g++.dg/concepts/intro1.C: Likewise.
* g++.dg/concepts/explicit-inst4.C: Likewise.
* g++.dg/concepts/req18.C: Likewise.
* g++.dg/concepts/explicit-spec5.C: Likewise.
* g++.dg/concepts/var-concept6.C: Likewise.
* g++.dg/concepts/fn9.C: Likewise.
* g++.dg/concepts/req2.C: Likewise.
* g++.dg/concepts/template-parm7.C: Likewise.
* g++.dg/concepts/req14.C: Likewise.
* g++.dg/concepts/template-parm6.C: Likewise.
* g++.dg/concepts/variadic4.C: Likewise.
* g++.dg/concepts/fn6.C: Likewise.
* g++.dg/concepts/req-neg1.C: Likewise.
* g++.dg/concepts/alias3.C: Likewise.
* g++.dg/concepts/expression2.C: Likewise.
* g++.dg/concepts/partial-spec3.C: Likewise.
* g++.dg/concepts/expression3.C: Likewise.
* g++.dg/concepts/memfun-err.C: Likewise.
* g++.dg/concepts/pr66091.C: Likewise.
* g++.dg/concepts/explicit-spec2.C: Likewise.
* g++.dg/concepts/equiv.C: Likewise.
* g++.dg/concepts/friend1.C: Likewise.
* g++.dg/concepts/fn4.C: Likewise.
* g++.dg/concepts/var-templ3.C: Likewise.
* g++.dg/concepts/explicit-inst2.C: Likewise.
* g++.dg/concepts/alias2.C: Likewise.
* g++.dg/concepts/regress/alias-decl-42.C: Likewise.
* g++.dg/concepts/placeholder6.C: Likewise.
* g++.dg/concepts/fn10.C: Likewise.
* g++.dg/concepts/req3.C: Likewise.
* g++.dg/concepts/variadic2.C: Likewise.
* g++.dg/concepts/pr65636.C: Likewise.
* g++.dg/concepts/intro6.C: Likewise.
* g++.dg/concepts/class2.C: Likewise.
* g++.dg/concepts/fn2.C: Likewise.
* g++.dg/concepts/req20.C: Likewise.
* g++.dg/concepts/req8.C: Likewise.
* g++.dg/concepts/placeholder1.C: Likewise.
* g++.dg/concepts/pr65854.C: Likewise.
* g++.dg/concepts/member-concept.C: Likewise.
* g++.dg/concepts/template-parm2.C: Likewise.
* g++.dg/concepts/variadic1.C: Likewise.
* g++.dg/concepts/fn7.C: Likewise.
* g++.dg/concepts/intro4.C: Likewise.
* g++.dg/concepts/req13.C: Likewise.
* g++.dg/concepts/inherit-ctor3.C: Likewise.
* g++.dg/concepts/explicit-spec6.C: Likewise.
* g++.dg/concepts/auto1.C: Likewise.
* g++.dg/concepts/alias1.C: Likewise.
* g++.dg/concepts/fn-concept1.C: Likewise.
* g++.dg/concepts/template-parm11.C: Likewise.
* g++.dg/concepts/explicit-spec4.C: Likewise.
* g++.dg/concepts/partial-concept-id1.C: Likewise.
* g++.dg/concepts/req9.C: Likewise.
* g++.dg/concepts/req4.C: Likewise.
* g++.dg/concepts/pr65681.C: Likewise.
* g++.dg/concepts/req7.C: Likewise.
* g++.dg/concepts/req12.C: Likewise.
* g++.dg/concepts/fn5.C: Likewise.
* g++.dg/concepts/alias4.C: Likewise.
* g++.dg/concepts/generic-fn.C: Likewise.
* g++.dg/concepts/feature-macro.C: Likewise.
* g++.dg/concepts/req19.C: Likewise.
* g++.dg/concepts/placeholder3.C: Likewise.
* g++.dg/concepts/intro3.C: Likewise.
* g++.dg/concepts/partial-spec5.C: Likewise.
* g++.dg/concepts/template-parm4.C: Likewise.
* g++.dg/concepts/dr1430.C: Likewise.
* g++.dg/concepts/pr65634.C: Likewise.
* g++.dg/concepts/var-concept4.C: Likewise.
* g++.dg/concepts/pr67249.C: Likewise.
* g++.dg/concepts/expression.C: Likewise.
* g++.dg/concepts/pr65575.C: Likewise.
* g++.dg/concepts/partial-spec2.C: Likewise.
* g++.dg/concepts/template-parm9.C: Likewise.
* g++.dg/concepts/inherit-ctor1.C: Likewise.
* g++.dg/concepts/equiv2.C: Likewise.
* g++.dg/concepts/req11.C: Likewise.
* g++.dg/concepts/template-parm1.C: Likewise.
* g++.dg/concepts/inherit-ctor2.C: Likewise.
* g++.dg/concepts/var-concept1.C: Likewise.
* g++.dg/concepts/fn3.C: Likewise.
* g++.dg/torture/pr46364.C: Likewise.
* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
* g++.dg/torture/stackalign/eh-thiscall-1.C: Likewise.
* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
* g++.dg/torture/pr52918-1.C: Likewise.
* g++.dg/torture/pr49394.C: Likewise.
* g++.dg/torture/pr57190.C: Likewise.
* g++.dg/cpp0x/static_assert8.C: Likewise.
* g++.dg/cpp0x/noexcept19.C: Likewise.
* g++.dg/cpp0x/variadic-throw.C: Likewise.
* g++.dg/cpp0x/variadic73.C: Likewise.
* g++.dg/cpp0x/noexcept02.C: Likewise.
* g++.dg/cpp0x/defaulted23.C: Likewise.
* g++.dg/cpp0x/noexcept08.C: Likewise.
* g++.dg/cpp0x/auto9.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-eh2.C: Likewise.
* g++.dg/cpp0x/error5.C: Likewise.
* c-c++-common/gomp/atomic-12.c: Likewise.
* c-c++-common/gomp/atomic-13.c: Likewise.
* c-c++-common/gomp/atomic-14.c: Likewise.
* c-c++-common/Wvarargs-2.c: Likewise.
* c-c++-common/Wvarargs.c: Likewise.
* c-c++-common/vector-subscript-2.c: Likewise.
* g++.old-deja/g++.robertl/eb123.C: Likewise.
* g++.old-deja/g++.eh/tmpl3.C: Likewise.
* g++.old-deja/g++.eh/cleanup2.C: Likewise.
* g++.old-deja/g++.eh/badalloc1.C: Likewise.
* g++.old-deja/g++.eh/throw2.C: Likewise.
* g++.old-deja/g++.eh/throw1.C: Likewise.
* g++.old-deja/g++.eh/tmpl1.C: Likewise.
* g++.old-deja/g++.other/new7.C: Likewise.
* g++.old-deja/g++.other/crash30.C: Likewise.
* g++.old-deja/g++.other/regstack.C: Likewise.
* g++.old-deja/g++.other/crash28.C: Likewise.
* g++.old-deja/g++.jason/bool5.C: Likewise.
* g++.old-deja/g++.mike/p10416.C: Likewise.
* g++.old-deja/g++.mike/eh25.C: Likewise.
* g++.old-deja/g++.mike/eh55.C: Likewise.
libcpp/
* include/cpplib.h (enum c_lang): Rename CLK_GNUCXX1Z
to CLK_GNUCXX17 and CLK_CXX1Z to CLK_CXX17.
* init.c (lang_defaults, cpp_init_builtins): Likewise.
* expr.c (cpp_classify_number): Use C++17 instead of C++1z
in diagnostics.
libstdc++-v3/
* testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
-std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
of c++1z and c++17_only instead of c++1z_only.  Adjust expected
diagnostics and comments refering to 1z to 17.
* testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
* testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
* testsuite/18_support/launder/1.cc (test02): Likewise.
* testsuite/18_support/launder/requirements_neg.cc: Likewise.
* testsuite/18_support/launder/requirements.cc: Likewise.
* testsuite/18_support/byte/requirements.cc: Likewise.
* testsuite/18_support/byte/ops.cc: Likewise.
* testsuite/18_support/byte/global_neg.cc: Likewise.
* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
Likewise.
* testsuite/27_io/types/4.cc: Likewise.
* testsuite/25_algorithms/sample/81221.cc: Likewise.
* testsuite/25_algorithms/sample/1.cc: Likewise.
* testsuite/25_algorithms/sample/2.cc: Likewise.
* testsuite/25_algorithms/search/searcher.cc: Likewise.
* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
* testsuite/experimental/filesystem/path/construct/string_view.cc:
Likewise.
* testsuite/24_iterators/range_access_cpp17.cc: Likewise.
* testsuite/24_iterators/container_access.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
* testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
* testsuite/20_util/pair/cons/deduction.cc: Likewise.
* testsuite/20_util/variant/deduction.cc: Likewise.
* testsuite/20_util/tuple/78939.cc: Likewise.
* testsuite/20_util/tuple/cons/deduction.cc: Likewise.
* testsuite/20_util/void_t/1.cc: Likewise.
* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
* testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
* testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
* testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
* testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
Likewise.
* testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/20_util/has_unique_object_representations/value.cc:
Likewise.
* testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
* testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
* testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
* testsuite/20_util/function/cons/deduction.cc: Likewise.
* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
Likewise.
* testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
* testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/20_util/is_aggregate/value.cc: Likewise.
* testsuite/26_numerics/lcm/1.cc: Likewise.
* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
* testsuite/26_numerics/gcd/1.cc: Likewise.
* testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
* testsuite/26_numerics/valarray/deduction.cc: Likewise.
* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
* testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
* testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
Likewise.
* testsuite/23_containers/array/cons/deduction.cc: Likewise.
* testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
* testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
Likewise.
* testsuite/23_containers/deque/cons/deduction.cc: Likewise.
* testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
Likewise.
* testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
Likewise.
* testsuite/23_containers/list/cons/deduction.cc: Likewise.
* testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
Likewise.
* testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
* testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
Likewise.
* testsuite/23_containers/vector/cons/deduction.cc: Likewise.
* testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
* testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
Likewise.
* testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
Likewise.
* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
Likewise.
* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
Likewise.

From-SVN: r252826

6 years agore PR rtl-optimization/82192 (gcc produces incorrect code with -O2 and bit-field)
Jakub Jelinek [Fri, 15 Sep 2017 15:54:04 +0000 (17:54 +0200)]
re PR rtl-optimization/82192 (gcc produces incorrect code with -O2 and bit-field)

PR rtl-optimization/82192
* combine.c (make_extraction): Don't look through non-paradoxical
SUBREGs or TRUNCATE if pos + len is or might be bigger than
inner's mode.

* gcc.c-torture/execute/pr82192.c: New test.

From-SVN: r252824

6 years ago[include] Add macro DISABLE_COPY_AND_ASSIGN
Yao Qi [Fri, 15 Sep 2017 15:40:50 +0000 (15:40 +0000)]
[include] Add macro DISABLE_COPY_AND_ASSIGN

We have many classes that copy cotr and assignment operator are deleted
in different projects, gcc, gdb and gold.  So this patch adds a macro
to do this, and replace these existing mechanical code with macro
DISABLE_COPY_AND_ASSIGN.

The patch was posted in gdb-patches,
https://sourceware.org/ml/gdb-patches/2017-07/msg00254.html but we
think it is better to put this macro in include/ansidecl.h so that
other projects can use it too.

include:

2017-09-15  Yao Qi  <yao.qi@linaro.org>
    Pedro Alves  <palves@redhat.com>

* ansidecl.h (DISABLE_COPY_AND_ASSIGN): New macro.

Co-Authored-By: Pedro Alves <palves@redhat.com>
From-SVN: r252823

6 years agoFix compile time error when using ansidecl.h with an old version of GCC.
Nick Clifton [Fri, 15 Sep 2017 14:53:48 +0000 (14:53 +0000)]
Fix compile time error when using ansidecl.h with an old version of GCC.

include/
2017-07-31  Nick Clifton  <nickc@redhat.com>

Binutils PR 21850
* ansidecl.h (OVERRIDE): Protect check of __cplusplus value with
#idef __cplusplus.

From-SVN: r252822

6 years agoTurn FUNCTION_ARG_OFFSET into a hook
Richard Sandiford [Fri, 15 Sep 2017 14:37:28 +0000 (14:37 +0000)]
Turn FUNCTION_ARG_OFFSET into a hook

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

gcc/
* target.def (function_arg_offset): New hook.
* targhooks.h (default_function_arg_offset): Declare.
* targhooks.c (default_function_arg_offset): New function.
* function.c (locate_and_pad_parm): Use
targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
* doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
(TARGET_FUNCTION_ARG_OFFSET): ...this.
* doc/tm.texi: Regenerate.
* config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
* config/spu/spu.c (spu_function_arg_offset): New function.
(TARGET_FUNCTION_ARG_OFFSET): Redefine.
* system.h (FUNCTION_ARG_OFFSET): Poison.

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

6 years agoTurn TRULY_NOOP_TRUNCATION into a hook
Richard Sandiford [Fri, 15 Sep 2017 13:47:41 +0000 (13:47 +0000)]
Turn TRULY_NOOP_TRUNCATION into a hook

I'm not sure the documentation is correct that outprec is always less
than inprec, and each non-default implementation tested for the case
in which it wasn't, but the patch leaves it as-is.

The SH port had a couple of TRULY_NOOP_TRUNCATION tests that were left
over from the old shmedia port.

2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayard  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* target.def (truly_noop_truncation): New hook.
(mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
than TRULY_NOOP_TRUNCATION.
* hooks.h (hook_bool_uint_uint_true): Declare.
* hooks.c (hook_bool_uint_uint_true): New function.
* doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
(TARGET_TRULY_NOOP_TRUNCATION): ...this.
* doc/tm.texi: Regenerate.
* combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
rather than TRULY_NOOP_TRUNCATION in comments.
(simplify_comparison): Likewise.
(record_truncated_value): Likewise.
* expmed.c (extract_bit_field_1): Likewise.
(extract_split_bit_field): Likewise.
* convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
instead of TRULY_NOOP_TRUNCATION.
* function.c (assign_parm_setup_block): Likewise.
* machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
* rtlhooks.c: Include target.h.
* config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
* config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
* config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
* config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
* config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
* config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
* config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
* config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
* config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
* config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
* config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
* config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
* config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
* config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
* config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
* config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
* config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
* config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
* config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
* config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
* config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
* config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
* config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
* config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
* config/mips/mips.c (mips_truly_noop_truncation): New function.
(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
* config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
rather than TRULY_NOOP_TRUNCATION in comments.
* config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
* config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
* config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
* config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
* config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
* config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
* config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
* config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
* config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
* config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
* config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
* config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
rather than TRULY_NOOP_TRUNCATION in comments.
* config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
* config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
* config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
* config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
* config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
TRULY_NOOP_TRUNCATION condition.
(MAYBE_INDEX_REGISTER_RTX_P): Likewise.
(TRULY_NOOP_TRUNCATION): Delete.
* config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
* config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
* config/spu/spu.c (spu_truly_noop_truncation): New function.
(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
* config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
* config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
* config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
* config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
rather than TRULY_NOOP_TRUNCATION in comments.
* config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
* config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
* config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
* config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
* config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
* system.h (TRULY_NOOP_TRUNCATION): Poison.

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

6 years ago[PR target/67591] ARM v8 Thumb IT blocks are deprecated
Christophe Lyon [Fri, 15 Sep 2017 13:12:33 +0000 (13:12 +0000)]
[PR target/67591] ARM v8 Thumb IT blocks are deprecated

2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>

PR target/67591
* config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
(*cmp_ior): Likewise.
(*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
(*ior_scc_scc_cmp): Likewise.
(*and_scc_scc): Likewise.
(*and_scc_scc_cmp): Likewise.

From-SVN: r252817

6 years agoTurn CANNOT_CHANGE_MODE_CLASS into a hook
Richard Sandiford [Fri, 15 Sep 2017 12:56:34 +0000 (12:56 +0000)]
Turn CANNOT_CHANGE_MODE_CLASS into a hook

This also seemed like a good opportunity to reverse the sense of the
hook to "can", to avoid the awkward double negative in !CANNOT.

2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayard  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* target.def (can_change_mode_class): New hook.
(mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
(hard_regno_nregs): Likewise.
* hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
* hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
* doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
(TARGET_CAN_CHANGE_MODE_CLASS): ...this.
(LOAD_EXTEND_OP): Update accordingly.
* doc/tm.texi: Regenerate.
* doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
CANNOT_CHANGE_MODE_CLASS.
* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
(REG_CAN_CHANGE_MODE_P): ...this new macro.
* combine.c (simplify_set): Update accordingly.
* emit-rtl.c (validate_subreg): Likewise.
* recog.c (general_operand): Likewise.
* regcprop.c (mode_change_ok): Likewise.
* reload1.c (choose_reload_regs): Likewise.
(inherit_piecemeal_p): Likewise.
* rtlanal.c (simplify_subreg_regno): Likewise.
* postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
instead of CANNOT_CHANGE_MODE_CLASS.
(reload_cse_simplify_operands): Likewise.
* reload.c (push_reload): Use targetm.can_change_mode_class
instead of CANNOT_CHANGE_MODE_CLASS.
(push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
REG_CANNOT_CHANGE_MODE_P.
* config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/alpha/alpha.c (alpha_can_change_mode_class): New function.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(arm_can_change_mode_class): New function.
* config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
than CANNOT_CHANGE_MODE_CLASS in comments.
* config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
* config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
(ix86_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(ia64_can_change_mode_class): New function.
* config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
* config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
(m32c_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
* config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
(mips_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(msp430_can_change_mode_class): New function.
* config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
* config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(pa_cannot_change_mode_class): Replace with...
(pa_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
than CANNOT_CHANGE_MODE_CLASS in comments.
* config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
* config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(pdp11_cannot_change_mode_class): Replace with...
(pdp11_can_change_mode_class): ...this new function, inverting the
sense of the return value.
* config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/powerpcspe/powerpcspe-protos.h
(rs6000_cannot_change_mode_class_ptr): Delete.
* config/powerpcspe/powerpcspe.c
(rs6000_cannot_change_mode_class_ptr): Delete.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(rs6000_option_override_internal): Assign to
targetm.can_change_mode_class instead of
rs6000_cannot_change_mode_class_ptr.
(rs6000_cannot_change_mode_class): Replace with...
(rs6000_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(rs6000_debug_cannot_change_mode_class): Replace with...
(rs6000_debug_can_change_mode_class): ...this new function.
* config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/riscv/riscv.c (riscv_can_change_mode_class): New function.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
Delete.
* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(rs6000_option_override_internal): Assign to
targetm.can_change_mode_class instead of
rs6000_cannot_change_mode_class_ptr.
(rs6000_cannot_change_mode_class): Replace with...
(rs6000_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(rs6000_debug_cannot_change_mode_class): Replace with...
(rs6000_debug_can_change_mode_class): ...this new function.
* config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
* config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
(s390_can_change_mode_class): ...this new function, inverting the
sense of the return value.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
* config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(sh_cannot_change_mode_class): Replace with...
(sh_can_change_mode_class): ...this new function, inverting the
sense of the return value.
* config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(sparc_can_change_mode_class): New function.
* config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/spu/spu.c (spu_can_change_mode_class): New function.
(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
* config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
* config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
(visium_can_change_mode_class): New function.
* system.h (CANNOT_CHANGE_MODE_CLASS): Poison.

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

6 years ago[demangler] Fix nested generic lambda
Nathan Sidwell [Fri, 15 Sep 2017 12:23:57 +0000 (12:23 +0000)]
[demangler] Fix nested generic lambda

https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00994.html
PR demangler/82195
* cp-demangle.c (d_name): Add 'toplevel' parm.  Pass to ...
(d_local_name): ... here.  Parse trailing function args on nested
local_name.
(d_encoding, d_special_name, d_class_enum_type): Adjust d_name calls.
* testsuite/demangle-expected: Add tests.

From-SVN: r252815

6 years agore PR lto/81968 (early lto debug objects make Solaris ld SEGV)
Richard Biener [Fri, 15 Sep 2017 12:11:13 +0000 (12:11 +0000)]
re PR lto/81968 (early lto debug objects make Solaris ld SEGV)

2017-09-15  Richard Biener  <rguenther@suse.de>

PR lto/81968
* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Iterate marking dependent sections necessary.

From-SVN: r252807

6 years ago[Demangle PATCH] Some pre-fix cleanups
Nathan Sidwell [Fri, 15 Sep 2017 10:50:05 +0000 (10:50 +0000)]
[Demangle PATCH] Some pre-fix cleanups

https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00983.html

* cp-demangle.c (is_fnqual_component_type): Reimplement using
FNQUAL_COMPONENT_CASE.
(d_encoding): Hold bare_function_type in local var.
(d_local_name): Build name in both cases and build result once.
Collapse switch-if to single conditional.
* testsuite/demangle-expected: Realign blank lines with tests.

From-SVN: r252802

6 years agore PR tree-optimization/82217 (ICE on valid code at -O1 and above: in visit_phi,...
Richard Biener [Fri, 15 Sep 2017 09:19:36 +0000 (09:19 +0000)]
re PR tree-optimization/82217 (ICE on valid code at -O1 and above: in visit_phi, at tree-ssa-sccvn.c:3908)

2017-09-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82217
* tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
but not undefined case.

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

From-SVN: r252796

6 years agore PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766...
Jakub Jelinek [Fri, 15 Sep 2017 08:30:28 +0000 (10:30 +0200)]
re PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766.c fails)

PR target/82145
* postreload.c (reload_cse_simplify_operands): Skip
NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.

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

From-SVN: r252791

6 years agore PR fortran/82184 (187.facerec in SPEC CPU 2000 miscompares)
Paul Thomas [Fri, 15 Sep 2017 07:26:14 +0000 (07:26 +0000)]
re PR fortran/82184 (187.facerec in SPEC CPU 2000 miscompares)

2017-09-15  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82184
trans-decl.c (gfc_trans_deferred_vars): Do not null the 'span'
field if the symbol is either implicitly or explicitly saved.

2017-09-15  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82184
* gfortran.dg/pointer_array_9.f90: New test.

From-SVN: r252781

6 years agore PR tree-optimization/68823 ([graphite] tramp3d-v4 compiled with -floop-nest-optimi...
Richard Biener [Fri, 15 Sep 2017 07:03:02 +0000 (07:03 +0000)]
re PR tree-optimization/68823 ([graphite] tramp3d-v4 compiled with -floop-nest-optimize crashes)

2017-09-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/68823
* graphite-scop-detection.c (build_alias_set): If we have a
possible dependence check whether we can handle them by just
looking at the DRs DR_ACCESS_FNs.
(build_scops): If build_alias_set fails, fail the SCOP.

From-SVN: r252780

6 years agoDaily bump.
GCC Administrator [Fri, 15 Sep 2017 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r252779

6 years agoIntroduce libgomp/testsuite/libgomp.c-c++-common
Tom de Vries [Thu, 14 Sep 2017 21:15:40 +0000 (21:15 +0000)]
Introduce libgomp/testsuite/libgomp.c-c++-common

2017-09-14  Tom de Vries  <tom@codesourcery.com>

* testsuite/libgomp.c++/cancel-taskgroup-1.C: Remove.
* testsuite/libgomp.c/cancel-taskgroup-1.c: Move to ...
* testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c: ... here.
* testsuite/libgomp.c/c.exp: Include test-cases from
libgomp.c-c++-common.
* testsuite/libgomp.c++/c++.exp: Same.  Force c++-mode compilation of .c
files.

From-SVN: r252775

6 years agors6000-builtin.def (BU_FLOAT128_1_HW): New macros to support float128 built-in functi...
Michael Meissner [Thu, 14 Sep 2017 20:44:40 +0000 (20:44 +0000)]
rs6000-builtin.def (BU_FLOAT128_1_HW): New macros to support float128 built-in functions that require the ISA 3.0 hardware.

[gcc]
2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
to support float128 built-in functions that require the ISA 3.0
hardware.
(BU_FLOAT128_3_HW): Likewise.
(SQRTF128): Add support for the IEEE 128-bit square root and fma
built-in functions.
(FMAF128): Likewise.
(FMAQ): Likewise.
* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
support for built-in functions that need the ISA 3.0 IEEE 128-bit
floating point instructions.
(rs6000_invalid_builtin): Likewise.
(rs6000_builtin_mask_names): Likewise.
* config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
(RS6000_BTM_FLOAT128_HW): Likewise.
(RS6000_BTM_COMMON): Likewise.
* config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
function.
* doc/extend.texi (RS/6000 built-in functions): Document the
IEEE 128-bit floating point square root and fused multiply-add
built-in functions.

[gcc/testsuite]
2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/abs128-1.c: Use __builtin_fabsf128 instead of
__builtin_fabsq.
* gcc.target/powerpc/float128-5.c: Use __builtin_fabsf128 instead
of __builtin_fabsq.  Prevent the test from running on 32-bit.
* gcc.target/powerpc/float128-fma1.c: New test.
* gcc.target/powerpc/float128-fma2.c: Likewise.
* gcc.target/powerpc/float128-sqrt1.c: Likewise.
* gcc.target/powerpc/float128-sqrt2.c: Likewise.

From-SVN: r252771

6 years agore PR c++/81314 (Undefined reference to a function with -fopenmp)
Jakub Jelinek [Thu, 14 Sep 2017 20:18:17 +0000 (22:18 +0200)]
re PR c++/81314 (Undefined reference to a function with -fopenmp)

PR c++/81314
* cp-gimplify.c (omp_var_to_track): Look through references.
(omp_cxx_notice_variable): Likewise.

* testsuite/libgomp.c++/pr81314.C: New test.

From-SVN: r252770

6 years agoFix crash accessing builtins in sanitizer.def and after (PR jit/82174)
David Malcolm [Thu, 14 Sep 2017 19:30:26 +0000 (19:30 +0000)]
Fix crash accessing builtins in sanitizer.def and after (PR jit/82174)

Calls to gcc_jit_context_get_builtin_function that accessed builtins
in sanitizer.def and after (or failed to match any builtin) led to
a crash accessing a NULL builtin name.

The entries with the NULL name came from these lines in sanitizer.def:

  /* This has to come before all the sanitizer builtins.  */
  DEF_BUILTIN_STUB(BEGIN_SANITIZER_BUILTINS, (const char *)0)

  [...snip...]

  /* This has to come after all the sanitizer builtins.  */
  DEF_BUILTIN_STUB(END_SANITIZER_BUILTINS, (const char *)0)

This patch updates jit-builtins.c to cope with such entries, fixing the
crash.

gcc/jit/ChangeLog:
PR jit/82174
* jit-builtins.c (matches_builtin): Ignore entries with a NULL
name.

gcc/testsuite/ChangeLog:
PR jit/82174
* jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c:
New test case.

From-SVN: r252769

6 years agors6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the set...
Pat Haugen [Thu, 14 Sep 2017 18:29:44 +0000 (18:29 +0000)]
rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the set of registers defined in the prologue.

* config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
reg (r2) isn't in the set of registers defined in the prologue.

* gcc.target/powerpc/r2_shrink-wrap.c: New.

From-SVN: r252768

6 years agolibgo: update to go1.9
Ian Lance Taylor [Thu, 14 Sep 2017 17:11:35 +0000 (17:11 +0000)]
libgo: update to go1.9

    Reviewed-on: https://go-review.googlesource.com/63753

From-SVN: r252767

6 years agoAdd LOOP_VINFO_MAX_VECT_FACTOR
Richard Sandiford [Thu, 14 Sep 2017 16:35:39 +0000 (16:35 +0000)]
Add LOOP_VINFO_MAX_VECT_FACTOR

Epilogue vectorisation uses the vectorisation factor of the main loop
as the maximum vectorisation factor allowed for correctness.  That makes
sense as a conservatively correct value, since the chosen vectorisation
factor will be strictly less than that anyway.  However, once the VF
itself becomes variable, it's easier to carry across the original
maximum VF instead.

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

gcc/
* tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
(LOOP_VINFO_MAX_VECT_FACTOR): New macro.
(LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
(LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
accordingly.
* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
max_vectorization_factor.
(vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.

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

6 years agoAdd a vect_worthwhile_without_simd_p helper routine
Richard Sandiford [Thu, 14 Sep 2017 16:30:54 +0000 (16:30 +0000)]
Add a vect_worthwhile_without_simd_p helper routine

The vectoriser sometimes considers lowering "vector" operations into N
scalar word operations.  This N needs to be fixed at compile time, so
the condition guarding it needs to change when variable-lengh vectors
are added.  This patch puts the condition into a helper routine so that
there's only one place to update.

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

gcc/
* tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
(vect_worthwhile_without_simd_p): Declare.
* tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
(vectorizable_reduction): Use it.
* tree-vect-stmts.c (vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.

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

6 years agoAdd a vect_get_num_copies helper routine
Richard Sandiford [Thu, 14 Sep 2017 16:30:36 +0000 (16:30 +0000)]
Add a vect_get_num_copies helper routine

This patch adds a vectoriser helper routine to calculate how
many copies of a vector statement we need.  At present this
is always:

  LOOP_VINFO_VECT_FACTOR (loop_vinfo) / TYPE_VECTOR_SUBPARTS (vectype)

but later patches add other cases.  Another benefit of using
a helper routine is that it can assert that the division is
exact (which it must be).

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

gcc/
* tree-vectorizer.h (vect_get_num_copies): New function.
* tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
* tree-vect-loop.c (vectorizable_reduction): Likewise.
(vectorizable_induction): Likewise.
(vectorizable_live_operation): Likewise.
* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
(vectorizable_bswap): Likewise.
(vectorizable_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vectorizable_condition): Likewise.
(vectorizable_comparison): Likewise.
(vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.

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

6 years agoMake more use of gimple-fold.h in tree-vect-loop.c
Richard Sandiford [Thu, 14 Sep 2017 16:24:31 +0000 (16:24 +0000)]
Make more use of gimple-fold.h in tree-vect-loop.c

This patch makes the vectoriser use the gimple-fold.h routines
in more cases, instead of vect_init_vector.  Later patches want
to use the same interface to handle variable-length vectors.

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

gcc/
* tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
of vect_init_vector.

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

6 years agoAdd gimple_build_vector* helpers
Richard Sandiford [Thu, 14 Sep 2017 16:18:55 +0000 (16:18 +0000)]
Add gimple_build_vector* helpers

This patch adds gimple-fold.h equivalents of build_vector and
build_vector_from_val.  Like the other gimple-fold.h routines
they always return a valid gimple value and add any new
statements to a given gimple_seq.  In combination with later
patches this reduces the number of force_gimple_operands.

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

gcc/
* gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
an inline wrapper that provides a location.
(gimple_build_vector): Likewise.
* gimple-fold.c (gimple_build_vector_from_val): New function.
(gimple_build_vector): Likewise.
* tree-vect-loop.c (get_initial_def_for_reduction): Use the new
functions to build the initial value.  Always return a gimple value.
(get_initial_defs_for_reduction): Likewise.  Only compute
neutral_vec once.
(vect_create_epilog_for_reduction): Don't call force_gimple_operand or
vect_init_vector on the results from get_initial_def(s)_for_reduction.
(vectorizable_induction): Use gimple_build_vector rather than
vect_init_vector.

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

6 years agoUse vec<> for constant permute masks
Richard Sandiford [Thu, 14 Sep 2017 16:04:32 +0000 (16:04 +0000)]
Use vec<> for constant permute masks

This patch makes can_vec_perm_p & co. take a vec<>, wrapped in new
typedefs vec_perm_indices and auto_vec_perm_indices.  There are two
reasons for doing this for SVE:

(1) it means that the number of elements is bundled with the elements
    themselves, and is obviously constant.

(2) it makes it easier to change the "unsigned char" element type to
    something wider.

Changing the target hook is left as follow-on work.

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

gcc/
* target.h (vec_perm_indices): New typedef.
(auto_vec_perm_indices): Likewise.
* optabs-query.h: Include target.h
(can_vec_perm_p): Take a vec_perm_indices *.
* optabs-query.c (can_vec_perm_p): Likewise.
(can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
* tree-vect-generic.c (lower_vec_perm): Likewise.
* tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
(vect_grouped_load_supported): Likewise.
(vect_shift_permute_load_chain): Likewise.
(vect_permute_store_chain): Use auto_vec_perm_indices.
(vect_permute_load_chain): Likewise.
* fold-const.c (fold_vec_perm): Take vec_perm_indices.
(fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
Update uses of can_vec_perm_p.
* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
mode with a number of elements.  Take a vec_perm_indices *.
(vect_create_epilog_for_reduction): Update accordingly.
Use auto_vec_perm_indices.
(have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
* tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
(vect_transform_slp_perm_load): Likewise.
(vect_schedule_slp_instance): Use auto_vec_perm_indices.
* tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
(vect_gen_perm_mask_checked): Likewise.
* tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
(vect_gen_perm_mask_checked): Likewise.
(vectorizable_mask_load_store): Use auto_vec_perm_indices.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
(vectorizable_bswap): Likewise.

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

6 years agoUse vec<> in build_vector
Richard Sandiford [Thu, 14 Sep 2017 15:46:08 +0000 (15:46 +0000)]
Use vec<> in build_vector

This patch makes build_vector take the elements as a vec<> rather
than a tree *.  This is useful for SVE because it bundles the number
of elements with the elements themselves, and enforces the fact that
the number is constant.  Also, I think things like the folds can be used
with any generic GNU vector, not just those that match machine vectors,
so the arguments to XALLOCAVEC had no clear limit.

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

gcc/
* tree.h (build_vector): Take a vec<tree> instead of a tree *.
* tree.c (build_vector): Likewise.
(build_vector_from_ctor): Update accordingly.
(build_vector_from_val): Likewise.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
* tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
* tree-vect-generic.c (add_rshift): Likewise.
(expand_vector_divmod): Likewise.
(optimize_vector_constructor): Likewise.
* tree-vect-slp.c (vect_get_constant_vectors): Likewise.
(vect_transform_slp_perm_load): Likewise.
(vect_schedule_slp_instance): Likewise.
* tree-vect-stmts.c (vectorizable_bswap): Likewise.
(vectorizable_call): Likewise.
(vect_gen_perm_mask_any): Likewise.  Add elements in order.
* expmed.c (make_tree): Likewise.
* fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
a vector passed to build_vector.
(fold_convert_const): Likewise.
(exact_inverse): Likewise.
(fold_ternary_loc): Likewise.
(fold_relational_const): Likewise.
(const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
(const_unop): Likewise.  Store the reduction accumulator in a
variable rather than an array.
(vec_cst_ctor_to_array): Take the number of elements as a parameter.
(fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
the new vector, rather than constructing it after the input arrays.
(native_interpret_vector): Use auto_vec<tree> when building
a vector passed to build_vector.  Add elements in order.
* tree-vect-loop.c (get_initial_defs_for_reduction): Use
auto_vec<tree> when building a vector passed to build_vector.
(vect_create_epilog_for_reduction): Likewise.
(vectorizable_induction): Likewise.
(get_initial_def_for_reduction): Likewise.  Fix indentation of
case statements.
* config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
to a vec<tree> *.
(sparc_fold_builtin): Use auto_vec<tree> when building a vector
passed to build_vector.

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

6 years agoStore VECTOR_CST_NELTS directly in tree_node
Richard Sandiford [Thu, 14 Sep 2017 15:25:57 +0000 (15:25 +0000)]
Store VECTOR_CST_NELTS directly in tree_node

Previously VECTOR_CST_NELTS (t) read the number of elements from
TYPE_VECTOR_SUBPARTS (TREE_TYPE (t)).  There were two ways of handling
this with variable TYPE_VECTOR_SUBPARTS: either forcibly convert the
number to a constant (which is doable) or store the number directly
in the VECTOR_CST.  The latter seemed better, since it involves less
pointer chasing and since the tree_node u field is otherwise unused
for VECTOR_CST.  It would still be easy to switch to the former in
future if we need to free up the field for someting else.

The patch also changes various bits of VECTOR_CST code to use
VECTOR_CST_NELTS instead of TYPE_VECTOR_SUBPARTS when iterating
over VECTOR_CST_ELTs.  Also, when the two are checked for equality,
the patch prefers to read VECTOR_CST_NELTS (which must be constant)
and check against TYPE_VECTOR_SUBPARTS, instead of the other way
around.

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

gcc/
* tree-core.h (tree_base::u): Add an "nelts" field.
(tree_vector): Use VECTOR_CST_NELTS as the length.
* tree.c (tree_size): Likewise.
(make_vector): Initialize VECTOR_CST_NELTS.
* tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
* cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
TYPE_VECTOR_SUBPARTS.
* expr.c (const_vector_mask_from_tree): Consistently use "units"
as the number of units, setting it from VECTOR_CST_NELTS.
(const_vector_from_tree): Likewise.
* fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
(fold_negate_expr_1): Likewise.
(fold_convert_const): Likewise.
(const_binop): Likewise.  Differentiate the number of output and
input elements.
(const_unop): Likewise.
(fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
in cases that did the opposite.

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

6 years agofold-vec-ld-longlong.c: Add lp64 requirement.
Will Schmidt [Thu, 14 Sep 2017 13:56:05 +0000 (13:56 +0000)]
fold-vec-ld-longlong.c: Add lp64 requirement.

[gcc/testsuite]

2017-09-14  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-ld-longlong.c: Add lp64 requirement.

From-SVN: r252757

6 years agotree-ssa-sccvn.c (visit_phi): Merge undefined values similar to VN_TOP.
Richard Biener [Thu, 14 Sep 2017 11:57:08 +0000 (11:57 +0000)]
tree-ssa-sccvn.c (visit_phi): Merge undefined values similar to VN_TOP.

2017-09-14  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
to VN_TOP.

* gcc.dg/tree-ssa/ssa-fre-59.c: New testcase.
* gcc.dg/uninit-suppress_2.c: Adjust.
* gcc.dg/tree-ssa/ssa-sccvn-2.c: Likewise.

From-SVN: r252756

6 years agoDon't xfail gcc.dg/vect/vect-multitypes-12.c on 32-bit SPARC (PR tree-optimization...
Rainer Orth [Thu, 14 Sep 2017 09:20:18 +0000 (09:20 +0000)]
Don't xfail gcc.dg/vect/vect-multitypes-12.c on 32-bit SPARC (PR tree-optimization/80996)

PR tree-optimization/80996
* gcc.dg/vect/vect-multitypes-12.c: Remove sparc*-*-* handling.

From-SVN: r252754

6 years ago* dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
Eric Botcazou [Thu, 14 Sep 2017 08:33:20 +0000 (08:33 +0000)]
* dwarf2out.c (dwarf2out_source_line): Remove superfluous test.

From-SVN: r252753

6 years agore PR target/81325 (-fcompare-debug failure on ppc64le)
Jakub Jelinek [Thu, 14 Sep 2017 08:07:30 +0000 (10:07 +0200)]
re PR target/81325 (-fcompare-debug failure on ppc64le)

PR target/81325
* cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
if and where to split a bb, except for splitting before debug insn
sequences followed by non-label real insn.  Delete debug insns
in between basic blocks.

* g++.dg/cpp0x/pr81325.C: New test.

From-SVN: r252752

6 years ago* combine.c (make_compound_operation_int): Formatting fixes.
Jakub Jelinek [Thu, 14 Sep 2017 08:05:42 +0000 (10:05 +0200)]
* combine.c (make_compound_operation_int): Formatting fixes.

From-SVN: r252751

6 years agoelf.h (LINK_EH_SPEC): Add -static-pie support.
Jakub Jelinek [Thu, 14 Sep 2017 07:56:23 +0000 (09:56 +0200)]
elf.h (LINK_EH_SPEC): Add -static-pie support.

* config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
* config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/netbsd.h (LINK_EH_SPEC): Likewise.
* config/sol2.h (LINK_EH_SPEC): Likewise.
* config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/s390/linux.h (LINK_SPEC): Likewise.
* config/freebsd.h (LINK_EH_SPEC): Likewise.
* config/openbsd.h (LINK_EH_SPEC): Likewise.
* config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
* config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
* config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.

From-SVN: r252750

6 years agocompiler, runtime: simplify select and channel operations
Ian Lance Taylor [Thu, 14 Sep 2017 03:57:18 +0000 (03:57 +0000)]
compiler, runtime: simplify select and channel operations

    In preparation for upgrading libgo to the 1.9 release, this
    approximately incorporates https://golang.org/cl/37661 and
    https://golang.org/cl/38351.

    CL 37661 changed the gc compiler such that the select statement simply
    returns an integer which is then used as the argument for a switch.
    Since gccgo already worked that way, this just adjusts the switch code
    to look like the gc switch code by removing the explicit case index
    expression and calculating it from the order of calls to selectsend,
    selectrecv, and selectdefault.

    CL 38351 simplifies the channel code by not passing the unused channel
    type descriptor pointer.

    Reviewed-on: https://go-review.googlesource.com/62730

From-SVN: r252749

6 years agocompiler: avoid compiler crash on invalid program
Ian Lance Taylor [Thu, 14 Sep 2017 03:53:21 +0000 (03:53 +0000)]
compiler: avoid compiler crash on invalid program

    I encountered this crash while working on upgrading libgo to the 1.9
    release.  I no longer have the cause of the crash, but it doesn't much
    matter, as the policy for crash-on-invalid errors is to fix the crash
    but not bother to commit the invalid test case.

    Reviewed-on: https://go-review.googlesource.com/62750

From-SVN: r252748

6 years agocompiler: emit type specific functions for aliases
Ian Lance Taylor [Thu, 14 Sep 2017 03:51:21 +0000 (03:51 +0000)]
compiler: emit type specific functions for aliases

    If we have an alias for a struct or array that requires a
    type-specific function, don't emit the function with the alias name.
    Emit it with the struct/array as usual.

    Test case is https://golang.org/cl/62531.

    Reviewed-on: https://go-review.googlesource.com/62412

From-SVN: r252747

6 years agocompiler, reflect: fix struct field names for embedded aliases
Ian Lance Taylor [Thu, 14 Sep 2017 03:48:51 +0000 (03:48 +0000)]
compiler, reflect: fix struct field names for embedded aliases

    This adds much of https://golang.org/cl/35731 and
    https://golang.org/cl/35732 to the gofrontend code.

    This is a step toward updating libgo to the 1.9 release.  The
    gofrontend already supports type aliases, and this is required for
    correct support of type aliases when used as embedded fields.

    The change to expressions.cc is to handle the << 1, used for the
    newly renamed offsetAnon field, in the constant context used for type
    descriptor initialization.

    Reviewed-on: https://go-review.googlesource.com/62710

From-SVN: r252746

6 years agocompiler: fix check for notinheap conversion
Ian Lance Taylor [Thu, 14 Sep 2017 03:45:44 +0000 (03:45 +0000)]
compiler: fix check for notinheap conversion

    A normal pointer may not be converted to a notinheap pointer.  We were
    erroneously permitting a conversion from a normal pointer to a
    notinheap unsafe.Pointer, which is useless since unsafe.Pointer is not
    marked notinheap.  Correct the test to permit a conversion from
    unsafe.Pointer to a notinheap pointer, which is the same test that the
    gc compiler uses.

    The test case for this is in the 1.9 runtime package.

    Reviewed-on: https://go-review.googlesource.com/62731

From-SVN: r252745