gcc.git
6 years agore PR fortran/82884 (ICE in gfc_resolve_character_array_constructor, at fortran/array...
Steven G. Kargl [Wed, 8 Nov 2017 20:56:43 +0000 (20:56 +0000)]
re PR fortran/82884 (ICE in gfc_resolve_character_array_constructor, at fortran/array.c:2069)

2017-11-08  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/82884
* arith.c (gfc_hollerith2character): Clear pad.

2017-11-08  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/82884
* gfortran.dg/hollerith_character_array_constructor.f90: New test.

From-SVN: r254553

6 years agore PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
Jakub Jelinek [Wed, 8 Nov 2017 20:15:42 +0000 (21:15 +0100)]
re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)

PR target/82855
* config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
nonimmediate_operand predicate for operand 1 instead of
register_operand.

From-SVN: r254552

6 years ago[AArch64] Add STP pattern to store a vec_concat of two 64-bit registers
Kyrylo Tkachov [Wed, 8 Nov 2017 18:32:09 +0000 (18:32 +0000)]
[AArch64] Add STP pattern to store a vec_concat of two 64-bit registers

On top of the previous vec_merge simplifications [1] we can add this pattern to perform
a store of a vec_concat of two 64-bit values in distinct registers as an STP.
This avoids constructing such a vector explicitly in a register and storing it as
a Q register.
This way for the code in the testcase we can generate:

construct_lane_1:
        ldp     d1, d0, [x0]
        fmov    d3, 1.0e+0
        fmov    d2, 2.0e+0
        fadd    d4, d1, d3
        fadd    d5, d0, d2
        stp     d4, d5, [x1, 32]
        ret

construct_lane_2:
        ldp     x2, x0, [x0]
        add     x3, x2, 1
        add     x4, x0, 2
        stp     x3, x4, [x1, 32]
        ret

instead of the current:
construct_lane_1:
        ldp     d0, d1, [x0]
        fmov    d3, 1.0e+0
        fmov    d2, 2.0e+0
        fadd    d0, d0, d3
        fadd    d1, d1, d2
        dup     v0.2d, v0.d[0]
        ins     v0.d[1], v1.d[0]
        str     q0, [x1, 32]
        ret

construct_lane_2:
        ldp     x2, x3, [x0]
        add     x0, x2, 1
        add     x2, x3, 2
        dup     v0.2d, x0
        ins     v0.d[1], x2
        str     q0, [x1, 32]
        ret

Bootstrapped and tested on aarch64-none-linux-gnu.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00272.html
    https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00273.html
    https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00274.html

* config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
New pattern.
* config/aarch64/constraints.md (Uml): New constraint.
* config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
predicate.

* gcc.target/aarch64/store_v2vec_lanes.c: New test.

From-SVN: r254551

6 years ago[simplify-rtx] Simplify vec_merge of vec_duplicates into vec_concat
Kyrylo Tkachov [Wed, 8 Nov 2017 18:29:38 +0000 (18:29 +0000)]
[simplify-rtx] Simplify vec_merge of vec_duplicates into vec_concat

Another vec_merge simplification that's missing from simplify-rtx.c is transforming
a vec_merge of two vec_duplicates. For example:
(set (reg:V2DF 80)
    (vec_merge:V2DF (vec_duplicate:V2DF (reg:DF 84))
        (vec_duplicate:V2DF (reg:DF 81))
        (const_int 2)))

Can be transformed into the simpler:
(set (reg:V2DF 80)
    (vec_concat:V2DF (reg:DF 81)
                (reg:DF 84)))

I believe this should always be beneficial.
I'm still looking into finding a small testcase demonstrating this, but on aarch64 SPEC
I've seen this eliminate some really bizzare codegen where GCC was generating nonsense like:
  ldr q18, [sp, 448]
  ins v18.d[0], v23.d[0]
  ins v18.d[1], v22.d[0]

With q18 being pushed and popped off the stack in the prologue and epilogue of the function!
These are large files from SPEC that I haven't been able to analyse yet as to why GCC even attempts
to do that, but with this patch it doesn't try to load a register and overwrite all its lanes.
This patch shaves off about 5k of code size from zeusmp on aarch64 at -O3, so I believe it's a good
thing to do.

* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
of two vec_duplicates into a vec_concat.

From-SVN: r254550

6 years agovec_merge + vec_duplicate + vec_concat simplification
Kyrylo Tkachov [Wed, 8 Nov 2017 18:27:57 +0000 (18:27 +0000)]
vec_merge + vec_duplicate + vec_concat simplification

Another vec_merge simplification that's missing is transforming:
(vec_merge (vec_duplicate x) (vec_concat (y) (z)) (const_int N))
into
(vec_concat x z) if N == 1 (0b01) or
(vec_concat y x) if N == 2 (0b10)

For the testcase in this patch on aarch64 this allows us to try matching during combine the pattern:
(set (reg:V2DI 78 [ x ])
    (vec_concat:V2DI
        (mem:DI (reg/v/f:DI 76 [ y ]) [1 *y_4(D)+0 S8 A64])
        (mem:DI (plus:DI (reg/v/f:DI 76 [ y ])
                (const_int 8 [0x8])) [1 MEM[(long long int *)y_4(D) + 8B]+0 S8 A64])))

rather than the more complex:
(set (reg:V2DI 78 [ x ])
    (vec_merge:V2DI (vec_duplicate:V2DI (mem:DI (plus:DI (reg/v/f:DI 76 [ y ])
                    (const_int 8 [0x8])) [1 MEM[(long long int *)y_4(D) + 8B]+0 S8 A64]))
        (vec_duplicate:V2DI (mem:DI (reg/v/f:DI 76 [ y ]) [1 *y_4(D)+0 S8 A64]))
        (const_int 2 [0x2])))

We don't actually have an aarch64 pattern for the simplified version above, but it's a simple enough
form to add, so this patch adds such a pattern that performs a concatenated load of two 64-bit vectors
in adjacent memory locations as a single Q-register LDR. The new aarch64 pattern is needed to demonstrate
the effectiveness of the simplify-rtx change, so I've kept them together as one patch.

Now for the testcase in the patch we can generate:
construct_lanedi:
        ldr     q0, [x0]
        ret

construct_lanedf:
        ldr     q0, [x0]
        ret

instead of:
construct_lanedi:
        ld1r    {v0.2d}, [x0]
        ldr     x0, [x0, 8]
        ins     v0.d[1], x0
        ret

construct_lanedf:
        ld1r    {v0.2d}, [x0]
        ldr     d1, [x0, 8]
        ins     v0.d[1], v1.d[0]
        ret

The new memory constraint Utq is needed because we need to allow only the Q-register addressing modes but
the MEM expressions in the RTL pattern have 64-bit vector modes, and if we don't constrain them they will
allow the D-register addressing modes during register allocation/address mode selection, which will produce
invalid assembly.

Bootstrapped and tested on aarch64-none-linux-gnu.

* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
Simplify vec_merge of vec_duplicate and vec_concat.
* config/aarch64/constraints.md (Utq): New constraint.
* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
define_insn.

* gcc.target/aarch64/load_v2vec_lanes_1.c: New test.

From-SVN: r254549

6 years agoSimplify vec_merge of vec_duplicate with const_vector
Kyrylo Tkachov [Wed, 8 Nov 2017 18:23:35 +0000 (18:23 +0000)]
Simplify vec_merge of vec_duplicate with const_vector

I'm trying to improve some of the RTL-level handling of vector lane operations on aarch64 and that
involves dealing with a lot of vec_merge operations. One simplification that I noticed missing
from simplify-rtx are combinations of vec_merge with vec_duplicate.
In this particular case:
(vec_merge (vec_duplicate (X)) (const_vector [A, B]) (const_int N))

which can be replaced with

(vec_concat (X) (B)) if N == 1 (0b01) or
(vec_concat (A) (X)) if N == 2 (0b10).

For the aarch64 testcase in this patch this simplifications allows us to try to combine:
(set (reg:V2DI 77 [ x ])
    (vec_concat:V2DI (mem:DI (reg:DI 0 x0 [ y ]) [1 *y_3(D)+0 S8 A64])
        (const_int 0 [0])))

instead of the more complex:
(set (reg:V2DI 77 [ x ])
    (vec_merge:V2DI (vec_duplicate:V2DI (mem:DI (reg:DI 0 x0 [ y ]) [1 *y_3(D)+0 S8 A64]))
        (const_vector:V2DI [
                (const_int 0 [0])
                (const_int 0 [0])
            ])
        (const_int 1 [0x1])))

For the simplified form above we already have an aarch64 pattern: *aarch64_combinez<mode> which
is missing a DI/DFmode version due to an oversight, so this patch extends that pattern as well to
use the VDC mode iterator that includes DI and DFmode (as well as V2HF which VD_BHSI was missing).
The aarch64 hunk is needed to see the benefit of the simplify-rtx.c hunk, so I didn't split them
into separate patches.

Before this for the testcase we'd generate:
construct_lanedi:
        movi    v0.4s, 0
        ldr     x0, [x0]
        ins     v0.d[0], x0
        ret

construct_lanedf:
        movi    v0.2d, 0
        ldr     d1, [x0]
        ins     v0.d[0], v1.d[0]
        ret

but now we can generate:
construct_lanedi:
        ldr     d0, [x0]
        ret

construct_lanedf:
        ldr     d0, [x0]
        ret

Bootstrapped and tested on aarch64-none-linux-gnu.

* simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
Simplify vec_merge of vec_duplicate and const_vector.
* config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
New predicate.
* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
mode iterator.  Update predicate on operand 1 to
handle non-const_vec constants.  Delete constraints.
(*aarch64_combinez_be<mode>): Likewise for operand 2.

* gcc.target/aarch64/construct_lane_zero_1.c: New test.

From-SVN: r254548

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 17:32:18 +0000 (17:32 +0000)]
[multiple changes]

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* lib-xref.ads, lib-xref-spark_specific.adb
(Traverse_Compilation_Unit): Move declaration to package body.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_spark.adb (Expand_SPARK_N_Object_Renaming_Declaration): Obtain
the type of the renaming from its defining entity, rather then the
subtype mark as there may not be a subtype mark.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

* adaint.c, s-oscons-tmplt.c, init.c, libgnat/system-qnx-aarch64.ads,
libgnarl/a-intnam__qnx.ads, libgnarl/s-intman__qnx.adb,
libgnarl/s-osinte__qnx.ads, libgnarl/s-qnx.ads,
libgnarl/s-taprop__qnx.adb, s-oscons-tmplt.c, sigtramp-qnx.c,
terminals.c: Initial port of GNAT for aarch64-qnx

2017-11-08  Elisa Barboni  <barboni@adacore.com>

* exp_util.adb (Find_DIC_Type): Move...
* sem_util.ads, sem_util.adb (Find_DIC_Type): ... here.

2017-11-08  Justin Squirek  <squirek@adacore.com>

* sem_res.adb (Resolve_Allocator): Add info messages corresponding to
the owner and corresponding coextension.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

* sem_aggr.adb (Resolve_Delta_Aggregate): Divide into the
following separate procedures.
(Resolve_Delta_Array_Aggregate): Previous code form
Resolve_Delta_Aggregate.
(Resolve_Delta_Record_Aggregate): Extend previous code to cover latest
ARG decisions on the legality rules for delta aggregates for records:
in the case of a variant record, components from different variants
cannot be specified in the delta aggregate, and this must be checked
statically.

From-SVN: r254547

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 17:10:05 +0000 (17:10 +0000)]
[multiple changes]

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Scope_Record): Remove File_Num component.
* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
removed component.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

* sem_ch4.adb: Minor typo fix.

From-SVN: r254546

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 16:52:32 +0000 (16:52 +0000)]
[multiple changes]

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Scope_Record): Remove Spec_File_Num and
Spec_Scope_Num components.
* spark_xrefs.adb (dspark): Skip pretty-printing to removed components.
* lib-xref-spark_specific.adb (Add_SPARK_Scope): Skip initialization of
removed components.
(Collect_SPARK_Xrefs): Skip setting proper values of removed
components.

2017-11-08  Gary Dismukes  <dismukes@adacore.com>

* exp_ch4.adb (Expand_N_Type_Conversion): Add test that the selector
name is a discriminant in check for unconditional accessibility
violation within instances.

From-SVN: r254545

6 years agolib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case for constants...
Pierre-Marie de Rodat [Wed, 8 Nov 2017 16:45:55 +0000 (16:45 +0000)]
lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case for constants (with variable input).

gcc/ada/

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove special-case
for constants (with variable input).
(Is_Constant_Object_Without_Variable_Input): Remove.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch9.adb, sem_disp.adb, sem_util.adb: Minor reformatting.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (Rtype): Remove special-casing of constants for SPARK
cross-references.
(dspark): Remove hardcoded table bound.

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Analyze_Aggregate): For Ada2020 delta aggregates, use
the type of the base of the construct to determine the type (or
candidate interpretations) of the delta aggregate. This allows the
construct to appear in a context that expects a private extension.
* sem_res.adb (Resolve): Handle properly a delta aggregate with an
overloaded base.

gcc/testsuite/

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

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

From-SVN: r254544

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 16:31:39 +0000 (16:31 +0000)]
[multiple changes]

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Xref_Record): Replace file and scope indices
with Entity_Id of the reference.
* spark_xrefs.adb (dspark): Adapt pretty-printing routine.
* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Store Entity_Id of the
reference, not the file and scope indices.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

* errout.ads (Current_Node): New.
* errout.adb (Error_Msg): Use Current_Node.
* par-ch6.adb, par-ch7.adb, par-ch9.adb, par-util.adb: Set Current_Node
when relevant.
* style.adb: Call Error_Msg_N when possible.

From-SVN: r254543

6 years agospark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to Entity.
Piotr Trojanek [Wed, 8 Nov 2017 16:25:03 +0000 (16:25 +0000)]
spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to Entity.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Scope_Record): Rename Scope_Id component to
Entity.
* lib-xref-spark_specific.adb, spark_xrefs.adb: Propagate renaming of
the Scope_Id record component.

From-SVN: r254542

6 years agospark_xrefs.ads (SPARK_File_Record): Remove string components.
Piotr Trojanek [Wed, 8 Nov 2017 16:22:37 +0000 (16:22 +0000)]
spark_xrefs.ads (SPARK_File_Record): Remove string components.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_File_Record): Remove string components.
* spark_xrefs.adb (dspark): Remove pretty-printing of removed
SPARK_File_Record components.
* lib-xref-spark_specific.adb (Add_SPARK_File): Do not store string
representation of files/units.

From-SVN: r254541

6 years agolib-xref.ads, [...] (Traverse_Declarations): Remove Inside_Stubs parameter.
Piotr Trojanek [Wed, 8 Nov 2017 16:16:04 +0000 (16:16 +0000)]
lib-xref.ads, [...] (Traverse_Declarations): Remove Inside_Stubs parameter.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* lib-xref.ads, lib-xref-spark_specific.adb (Traverse_Declarations):
Remove Inside_Stubs parameter.

From-SVN: r254540

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 16:04:35 +0000 (16:04 +0000)]
[multiple changes]

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Xref_Record): Referenced object is now
represented by Entity_Id.
(SPARK_Scope_Record): Referenced scope (e.g. subprogram) is now
represented by Entity_Id; this information is not repeated as
Scope_Entity.
(Heap): Moved from lib-xref-spark_specific.adb, to reside next to
Name_Of_Heap_Variable.
* spark_xrefs.adb (dspark): Adapt debug routine to above changes in
data types.
* lib-xref-spark_specific.adb: Adapt routines for populating SPARK
scope and xrefs tables to above changes in data types.

2017-11-08  Justin Squirek  <squirek@adacore.com>

* sem_ch8.adb (Mark_Use_Clauses): Add condition to always mark the
primitives of generic actuals.
(Mark_Use_Type): Add recursive call to properly mark class-wide type's
base type clauses as per ARM 8.4 (8.2/3).

2017-11-08  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Analyze_Generic_Subprobram_Body): Validate
categorization dependency of the body, as is done for non-generic
units.
(New_Overloaded_Entity, Visible_Part_Type): Remove linear search
through declarations (Simple optimization, no behavior change).

From-SVN: r254539

6 years agospark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
Piotr Trojanek [Wed, 8 Nov 2017 15:48:46 +0000 (15:48 +0000)]
spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* spark_xrefs.ads (SPARK_Xref_Record): Remove inessential components.
(SPARK_Scope_Record): Remove inessential components.
* spark_xrefs.adb (dspark): Remove pretty-printing of removed record
components.
* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove setting of
removed record components.
(Add_SPARK_Xrefs): Remove setting of removed record components.

From-SVN: r254538

6 years agopr57878.C (__sso_string_base::_M_get_allocator): Return a value.
Jakub Jelinek [Wed, 8 Nov 2017 15:48:30 +0000 (16:48 +0100)]
pr57878.C (__sso_string_base::_M_get_allocator): Return a value.

* g++.dg/pr57878.C (__sso_string_base::_M_get_allocator): Return
a value.

From-SVN: r254537

6 years agore PR tree-optimization/78821 (GCC7: Copying whole 32 bits structure field by field...
Jakub Jelinek [Wed, 8 Nov 2017 15:46:58 +0000 (16:46 +0100)]
re PR tree-optimization/78821 (GCC7: Copying whole 32 bits structure field by field not optimised into copying whole 32 bits at once)

PR tree-optimization/78821
* gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
data member.
(store_operand_info::store_operand_info): Initialize it to false.
(pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
store in the group, and if chain_info is non-NULL, to ignore altogether
that chain.
(compatible_load_p): Fail if bit_not_p does not match.
(imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
(handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
(pass_store_merging::process_store): Adjust
terminate_all_aliasing_chains calls to pass NULL in all current spots,
call terminate_all_aliasing_chains newly when adding a store into
a chain with non-NULL chain_info.

* gcc.dg/store_merging_2.c: Expect 3 store mergings instead of 2.
* gcc.dg/store_merging_13.c (f7, f8, f9, f10, f11, f12, f13): New
functions.
(main): Test also those.  Expect 13 store mergings instead of 6.
* gcc.dg/store_merging_14.c (f7, f8, f9): New functions.
(main): Test also those.  Expect 9 store mergings instead of 6.

From-SVN: r254536

6 years agolib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for empty entities.
Piotr Trojanek [Wed, 8 Nov 2017 15:38:51 +0000 (15:38 +0000)]
lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for empty entities.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Remove dead check for
empty entities.

From-SVN: r254535

6 years ago[AArch64] Simplify aarch64_can_eliminate
Wilco Dijkstra [Wed, 8 Nov 2017 15:36:34 +0000 (15:36 +0000)]
[AArch64] Simplify aarch64_can_eliminate

Simplify aarch64_can_eliminate - if we need a frame pointer, we must
eliminate to HARD_FRAME_POINTER_REGNUM.  Rather than hardcoding all
combinations from the ELIMINABLE_REGS list, just do the correct check.

    gcc/
* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.

From-SVN: r254534

6 years ago[AArch64] Remove aarch64_frame_pointer_required
Wilco Dijkstra [Wed, 8 Nov 2017 15:34:36 +0000 (15:34 +0000)]
[AArch64] Remove aarch64_frame_pointer_required

To implement -fomit-leaf-frame-pointer, there are 2 places where we need
to check whether we have to use a frame chain (since register allocation
may allocate LR in a leaf function that omits the frame pointer, but if
LR is spilled we must emit a frame chain).  To simplify this do not force
frame_pointer_needed via aarch64_frame_pointer_required, but enable the
frame chain in aarch64_layout_frame.  Now aarch64_frame_pointer_required
can be removed and aarch64_can_eliminate is simplified.

    gcc/
* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
Remove.
(aarch64_layout_frame): Initialise emit_frame_chain.
(aarch64_can_eliminate): Remove omit leaf frame pointer code.
(TARGET_FRAME_POINTER_REQUIRED): Remove define.

    testsuite/
* gcc.target/aarch64/dwarf-cfa-reg.c: Update.

From-SVN: r254533

6 years agosem_disp.adb (Is_Inherited_Public_Operation): Extend the functionality of this routin...
Pierre-Marie de Rodat [Wed, 8 Nov 2017 15:17:43 +0000 (15:17 +0000)]
sem_disp.adb (Is_Inherited_Public_Operation): Extend the functionality of this routine to handle multiple levels of derivations.

gcc/ada/

2017-11-08  Javier Miranda  <miranda@adacore.com>

* sem_disp.adb (Is_Inherited_Public_Operation): Extend the
functionality of this routine to handle multiple levels of derivations.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb: Elist36 is now used as Nested_Scenarios.
(Nested_Scenarios): New routine.
(Set_Nested_Scenarios): New routine.
(Write_Field36_Name): New routine.
* einfo.ads: Add new attribute Nested_Scenarios along with occurrences
in entities.
(Nested_Scenarios): New routine along with pragma Inline.
(Set_Nested_Scenarios): New routine along with pragma Inline.
* sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine.
(Process_Nested_Scenarios): New routine.
(Traverse_Body): When a subprogram body is traversed for the first
time, find, save, and process all suitable scenarios found within.
Subsequent traversals of the same subprogram body utilize the saved
scenarios.

2017-11-08  Piotr Trojanek  <trojanek@adacore.com>

* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of
protected operations.
(Add_SPARK_Xrefs): Simplify detection of empty entities.
* get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads,
put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing,
reading and testing SPARK cross-references stored in the ALI files.
* lib-xref.ads (Output_SPARK_Xrefs): Remove.
* lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the
ALI file.
* spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together
with description of the SPARK xrefs ALI format.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o
and put_spark_refs.o.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object
when the associated access type is subject to pragma
No_Heap_Finalization.
* exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the
designated type in case it comes from a limited withed unit.

gcc/testsuite/

2017-11-08  Javier Miranda  <miranda@adacore.com>

* gnat.dg/overriding_ops2.adb, gnat.dg/overriding_ops2.ads,
gnat.dg/overriding_ops2_pkg.ads, gnat.dg/overriding_ops2_pkg-high.ads:
New testcase.

From-SVN: r254532

6 years agoexp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant SPARK-related...
Hristian Kirtchev [Wed, 8 Nov 2017 14:07:31 +0000 (14:07 +0000)]
exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant SPARK-related flags.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant
SPARK-related flags.  Add ??? comment.
* exp_util.adb (Insert_Actions): Add an entry for node
N_Variable_Reference_Marker.
* sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker.
* sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build
and record a variable reference marker for the current name.
(Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record
a variable reference marker for the current name.
* sem_elab.adb (Build_Variable_Reference_Marker): New routine.
(Extract_Variable_Reference_Attributes): Reimplemented.
(Info_Scenario): Add output for variable references and remove output
for variable reads.
(Info_Variable_Read): Removed.
(Info_Variable_Reference): New routine.
(Is_Suitable_Scenario): Variable references are now suitable scenarios
while variable reads are not.
(Output_Active_Scenarios): Add output for variable references and
remove output for variable reads.
(Output_Variable_Read): Removed.
(Output_Variable_Reference): New routine.
(Process_Variable_Read): Removed.
(Process_Variable_Reference): New routine.
(Process_Variable_Reference_Read): New routine.
* sem_elab.ads (Build_Variable_Reference_Marker): New routine.
* sem_res.adb (Resolve_Actuals): Build and record a variable reference
marker for the current actual.
* sem_spark.adb (Check_Node): Add an entry for node
N_Variable_Reference_Marker.
* sem_util.adb (Within_Subprogram_Call): Moved to the library level.
* sem_util.ads (Within_Subprogram_Call): Moved to the library level.
* sinfo.adb (Is_Read): New routine.
(Is_Write): New routine.
(Target): Updated to handle variable reference markers.
(Set_Is_Read): New routine.
(Set_Is_Write): New routine.
(Set_Target): Updated to handle variable reference markers.
* sinfo.ads: Add new attributes Is_Read and Is_Write along with
occurrences in nodes. Update attribute Target. Add new node
kind N_Variable_Reference_Marker.
(Is_Read): New routine along with pragma Inline.
(Is_Write): New routine along with pragma Inline.
(Set_Is_Read): New routine along with pragma Inline.
(Set_Is_Write): New routine along with pragma Inline.
* sprint.adb (Sprint_Node_Actual): Add an entry for node
N_Variable_Reference_Marker.

From-SVN: r254531

6 years agoaarch64-vect-lane-2.c (search_line_fast): Change type to void.
Andreas Schwab [Wed, 8 Nov 2017 13:56:04 +0000 (13:56 +0000)]
aarch64-vect-lane-2.c (search_line_fast): Change type to void.

* c-c++-common/torture/aarch64-vect-lane-2.c (search_line_fast):
Change type to void.

From-SVN: r254530

6 years agosem_util.adb (Subprogram_Name): Append suffix for overloaded subprograms.
Arnaud Charlet [Wed, 8 Nov 2017 13:52:43 +0000 (13:52 +0000)]
sem_util.adb (Subprogram_Name): Append suffix for overloaded subprograms.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

* sem_util.adb (Subprogram_Name): Append suffix for overloaded
subprograms.

From-SVN: r254529

6 years ago[multiple changes]
Pierre-Marie de Rodat [Wed, 8 Nov 2017 13:46:19 +0000 (13:46 +0000)]
[multiple changes]

2017-11-08  Yannick Moy  <moy@adacore.com>

* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
about unused use-type or use-package clauses inside inlined bodies.

2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
In_Partial_Fin along with a comment on its usage. Do not guarantee the
prior elaboration of a unit when the need came from a partial
finalization context.
(In_Initialization_Context): Relocated to Process_Call.
(Is_Partial_Finalization_Proc): New routine.
(Process_Access): Add new parameter In_Partial_Fin along with a comment
on its usage.
(Process_Activation_Call): Add new parameter In_Partial_Fin along with
a comment on its usage.
(Process_Activation_Conditional_ABE_Impl): Add new parameter
In_Partial_Fin along with a comment on its usage. Do not emit any ABE
diagnostics when the activation occurs in a partial finalization
context.
(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
In_Partial_Fin along with a comment on its usage.
(Process_Call): Add new parameter In_Partial_Fin along with a comment
on its usage. A call is within a partial finalization context when it
targets a finalizer or primitive [Deep_]Finalize, and the call appears
in initialization actions. Pass this information down to the recursive
steps of the Processing phase.
(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
comment on its usage. Remove the guard which suppresses the generation
of implicit Elaborate[_All] pragmas. This is now done in
Ensure_Prior_Elaboration.
(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
with a comment on its usage. Do not emit any ABE diagnostics when the
call occurs in a partial finalization context.
(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
comment on its usage.
(Process_Instantiation): Add new parameter In_Partial_Fin along with a
comment on its usage.
(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
with a comment on its usage.
(Process_Instantiation_Conditional_ABE): Add new parameter
In_Partial_Fin along with a comment on its usage. Do not emit any ABE
diagnostics when the instantiation occurs in a partial finalization
context.
(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
with a comment on its usage.
(Process_Scenario): Add new parameter In_Partial_Fin along  with a
comment on its usage.
(Process_Single_Activation): Add new parameter In_Partial_Fin along
with a comment on its usage.
(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
on its usage.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

* sem_ch13.adb: Add optional parameter to Error_Msg.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
for the Interfaces.* hierarchy as longer unit names are now allowed.

2017-11-08  Arnaud Charlet  <charlet@adacore.com>

* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
subprogram as well.  Support more cases of entities.
(Append_Entity_Name): Add some defensive code.

From-SVN: r254528

6 years agoPR 82869 Introduce logical_type_node and use it
Janne Blomqvist [Wed, 8 Nov 2017 11:51:00 +0000 (13:51 +0200)]
PR 82869 Introduce logical_type_node and use it

Earlier GFortran used to redefine boolean_type_node, which in the rest
of the compiler means the C/C++ _Bool/bool type, to the Fortran
default logical type.  When this redefinition was removed, a few
issues surfaced. Namely,

1) PR 82869, where we created a boolean tmp variable, and passed it to
the runtime library as a Fortran logical variable of a different size.

2) Fortran specifies that logical operations should be done with the
default logical kind, not in any other kind.

3) Using 8-bit variables have some issues, such as
   - on x86, partial register stalls and length prefix changes.
   - s390 has a compare with immediate and jump instruction which
     works with 32-bit but not 8-bit quantities.

This patch addresses these issues by introducing a type
logical_type_node which is a Fortran LOGICAL variable of default
kind. It is then used in places were the Fortran standard mandates, as
well as for compiler generated temporary variables.

For x86-64, using the Polyhedron benchmark suite, no performance or
code size difference worth mentioning was observed.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

PR 82869
* convert.c (truthvalue_conversion): Use logical_type_node.
* trans-array.c (gfc_trans_allocate_array_storage): Likewise.
(gfc_trans_create_temp_array): Likewise.
(gfc_trans_array_ctor_element): Likewise.
(gfc_trans_array_constructor_value): Likewise.
(trans_array_constructor): Likewise.
(trans_array_bound_check): Likewise.
(gfc_conv_array_ref): Likewise.
(gfc_trans_scalarized_loop_end): Likewise.
(gfc_conv_array_extent_dim): Likewise.
(gfc_array_init_size): Likewise.
(gfc_array_allocate): Likewise.
(gfc_trans_array_bounds): Likewise.
(gfc_trans_dummy_array_bias): Likewise.
(gfc_conv_array_parameter): Likewise.
(duplicate_allocatable): Likewise.
(duplicate_allocatable_coarray): Likewise.
(structure_alloc_comps): Likewise
(get_std_lbound): Likewise
(gfc_alloc_allocatable_for_assignment): Likewise
* trans-decl.c (add_argument_checking): Likewise
(gfc_generate_function_code): Likewise
* trans-expr.c (gfc_copy_class_to_class): Likewise
(gfc_trans_class_array_init_assign): Likewise
(gfc_trans_class_init_assign): Likewise
(gfc_conv_expr_present): Likewise
(gfc_conv_substring): Likewise
(gfc_conv_cst_int_power): Likewise
(gfc_conv_expr_op): Likewise
(gfc_conv_procedure_call): Likewise
(fill_with_spaces): Likewise
(gfc_trans_string_copy): Likewise
(gfc_trans_alloc_subarray_assign): Likewise
(gfc_trans_pointer_assignment): Likewise
(gfc_trans_scalar_assign): Likewise
(fcncall_realloc_result): Likewise
(alloc_scalar_allocatable_for_assignment): Likewise
(trans_class_assignment): Likewise
(gfc_trans_assignment_1): Likewise
* trans-intrinsic.c (build_fixbound_expr): Likewise
(gfc_conv_intrinsic_aint): Likewise
(gfc_trans_same_strlen_check): Likewise
(conv_caf_send): Likewise
(trans_this_image): Likewise
(conv_intrinsic_image_status): Likewise
(trans_image_index): Likewise
(gfc_conv_intrinsic_bound): Likewise
(conv_intrinsic_cobound): Likewise
(gfc_conv_intrinsic_mod): Likewise
(gfc_conv_intrinsic_dshift): Likewise
(gfc_conv_intrinsic_dim): Likewise
(gfc_conv_intrinsic_sign): Likewise
(gfc_conv_intrinsic_ctime): Likewise
(gfc_conv_intrinsic_fdate): Likewise
(gfc_conv_intrinsic_ttynam): Likewise
(gfc_conv_intrinsic_minmax): Likewise
(gfc_conv_intrinsic_minmax_char): Likewise
(gfc_conv_intrinsic_anyall): Likewise
(gfc_conv_intrinsic_arith): Likewise
(gfc_conv_intrinsic_minmaxloc): Likewise
(gfc_conv_intrinsic_minmaxval): Likewise
(gfc_conv_intrinsic_btest): Likewise
(gfc_conv_intrinsic_bitcomp): Likewise
(gfc_conv_intrinsic_shift): Likewise
(gfc_conv_intrinsic_ishft): Likewise
(gfc_conv_intrinsic_ishftc): Likewise
(gfc_conv_intrinsic_leadz): Likewise
(gfc_conv_intrinsic_trailz): Likewise
(gfc_conv_intrinsic_mask): Likewise
(gfc_conv_intrinsic_spacing): Likewise
(gfc_conv_intrinsic_rrspacing): Likewise
(gfc_conv_intrinsic_size): Likewise
(gfc_conv_intrinsic_sizeof): Likewise
(gfc_conv_intrinsic_transfer): Likewise
(gfc_conv_allocated): Likewise
(gfc_conv_associated): Likewise
(gfc_conv_same_type_as): Likewise
(gfc_conv_intrinsic_trim): Likewise
(gfc_conv_intrinsic_repeat): Likewise
(conv_isocbinding_function): Likewise
(conv_intrinsic_ieee_is_normal): Likewise
(conv_intrinsic_ieee_is_negative): Likewise
(conv_intrinsic_ieee_copy_sign): Likewise
(conv_intrinsic_move_alloc): Likewise
* trans-io.c (set_parameter_value_chk): Likewise
(set_parameter_value_inquire): Likewise
(set_string): Likewise
* trans-openmp.c (gfc_walk_alloc_comps): Likewise
(gfc_omp_clause_default_ctor): Likewise
(gfc_omp_clause_copy_ctor): Likewise
(gfc_omp_clause_assign_op): Likewise
(gfc_omp_clause_dtor): Likewise
(gfc_omp_finish_clause): Likewise
(gfc_trans_omp_clauses): Likewise
(gfc_trans_omp_do): Likewise
* trans-stmt.c (gfc_trans_goto): Likewise
(gfc_trans_sync): Likewise
(gfc_trans_arithmetic_if): Likewise
(gfc_trans_simple_do): Likewise
(gfc_trans_do): Likewise
(gfc_trans_forall_loop): Likewise
(gfc_trans_where_2): Likewise
(gfc_trans_allocate): Likewise
(gfc_trans_deallocate): Likewise
* trans-types.c (gfc_init_types): Initialize logical_type_node and
its true/false trees.
(gfc_get_array_descr_info): Use logical_type_node.
* trans-types.h (logical_type_node): New tree.
(logical_true_node): Likewise.
(logical_false_node): Likewise.
* trans.c (gfc_trans_runtime_check): Use logical_type_node.
(gfc_call_malloc): Likewise
(gfc_allocate_using_malloc): Likewise
(gfc_allocate_allocatable): Likewise
(gfc_add_comp_finalizer_call): Likewise
(gfc_add_finalizer_call): Likewise
(gfc_deallocate_with_status): Likewise
(gfc_deallocate_scalar_with_status): Likewise
(gfc_call_realloc): Likewise

gcc/testsuite/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

PR 82869
* gfortran.dg/logical_temp_io.f90: New test.
* gfortran.dg/logical_temp_io_kind8.f90: New test.

From-SVN: r254526

6 years agoFix vrp101.c test-case.
Martin Liska [Wed, 8 Nov 2017 11:46:07 +0000 (12:46 +0100)]
Fix vrp101.c test-case.

2017-11-08  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-ssa/vrp101.c: Update expected pattern as
frequencies are not longer printed in dump output.

From-SVN: r254525

6 years agoSimplify call of gimple_call_internal_p.
Martin Liska [Wed, 8 Nov 2017 11:45:35 +0000 (12:45 +0100)]
Simplify call of gimple_call_internal_p.

2017-11-08  Martin Liska  <mliska@suse.cz>

* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
of gimple_call_internal_p.

From-SVN: r254524

6 years ago* gcc.dg/strlenopt-33g.c: Remove duplicate dg-do command.
Eric Botcazou [Wed, 8 Nov 2017 10:00:31 +0000 (10:00 +0000)]
* gcc.dg/strlenopt-33g.c: Remove duplicate dg-do command.

From-SVN: r254523

6 years agoFix -Wreturn-type fallout in g++.old-deja/g++.brendan/asm-extn1.C
Rainer Orth [Wed, 8 Nov 2017 09:39:33 +0000 (09:39 +0000)]
Fix -Wreturn-type fallout in g++.old-deja/g++.brendan/asm-extn1.C

* g++.old-deja/g++.brendan/asm-extn1.C: Accept all sparc* targets.
(main): Add return type.

From-SVN: r254522

6 years ago[mips] Wrap ASM_OUTPUT_LABELREF in do {} while (0)
Tom de Vries [Wed, 8 Nov 2017 08:51:52 +0000 (08:51 +0000)]
[mips] Wrap ASM_OUTPUT_LABELREF in do {} while (0)

2017-11-07  Tom de Vries  <tom@codesourcery.com>

* config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".

From-SVN: r254521

6 years ago[mips] Remove semicolon after do {} while (0) in ASM_OUTPUT_CASE_END
Tom de Vries [Wed, 8 Nov 2017 08:51:43 +0000 (08:51 +0000)]
[mips] Remove semicolon after do {} while (0) in ASM_OUTPUT_CASE_END

2017-11-07  Tom de Vries  <tom@codesourcery.com>

* config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
"do {} while (0)".

From-SVN: r254520

6 years agoFix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792).
Martin Liska [Wed, 8 Nov 2017 08:17:30 +0000 (09:17 +0100)]
Fix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792).

2017-11-08  Martin Liska  <mliska@suse.cz>

PR sanitizer/82792
* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
2017-11-08  Martin Liska  <mliska@suse.cz>

PR sanitizer/82792
* g++.dg/asan/pr82792.C: New test.

From-SVN: r254519

6 years agore PR bootstrap/82670 (UBSAN bootstrap broken after recent libsanitizer merge)
Jakub Jelinek [Wed, 8 Nov 2017 08:17:02 +0000 (09:17 +0100)]
re PR bootstrap/82670 (UBSAN bootstrap broken after recent libsanitizer merge)

PR bootstrap/82670
* ubsan/Makefile.am (ubsan_files): Remove ubsan_init_standalone.cc
and ubsan_signals_standalone.cc.
* ubsan/Makefile.in: Regenerated.

From-SVN: r254518

6 years agoanalyze_brprob.py: fix SI units
Martin Liska [Wed, 8 Nov 2017 07:24:14 +0000 (08:24 +0100)]
analyze_brprob.py: fix SI units

2017-11-08  Martin Liska  <mliska@suse.cz>

* analyze_brprob.py: Fix abbreviations for SI units.

From-SVN: r254517

6 years agoDaily bump.
GCC Administrator [Wed, 8 Nov 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r254516

6 years ago* gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
Eric Botcazou [Tue, 7 Nov 2017 23:58:52 +0000 (23:58 +0000)]
* gimple-pretty-print.c (dump_profile): Return "" instead of NULL.

From-SVN: r254513

6 years ago[PATCH] Install cp/operators.def as part of plugin headers
Boris Kolpackov [Tue, 7 Nov 2017 22:49:25 +0000 (22:49 +0000)]
[PATCH] Install cp/operators.def as part of plugin headers

https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00498.html
2017-11-07 Boris Kolpackov  <boris@codesynthesis.com>
* Make-lang.in (CP_PLUGIN_HEADERS): Add operators.def since included
in cp-tree.h.

From-SVN: r254512

6 years agore PR c++/82835 (ICE on valid code with -fopenmp)
Jakub Jelinek [Tue, 7 Nov 2017 20:51:05 +0000 (21:51 +0100)]
re PR c++/82835 (ICE on valid code with -fopenmp)

PR c++/82835
* cp-gimplify.c (cxx_omp_clause_apply_fn): For methods pass i - 1 to
convert_default_arg instead of i.

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

From-SVN: r254511

6 years agore PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
Jakub Jelinek [Tue, 7 Nov 2017 20:49:30 +0000 (21:49 +0100)]
re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)

PR target/82855
* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
(*cmp<mode>_ccz_1): New insn with $k alternative.

* gcc.target/i386/avx512dq-pr82855.c: New test.

From-SVN: r254510

6 years agore PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
Jakub Jelinek [Tue, 7 Nov 2017 20:48:35 +0000 (21:48 +0100)]
re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)

PR target/82855
* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
RTX_COMM_COMPARE as commutative as well.
(ix86_binary_operator_ok): Formatting fix.
* config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
*<code><mode>3<mask_name><round_saeonly_name>,
*<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
*<s>mul<mode>3_highpart<mask_name>,
*vec_widen_umult_even_v16si<mask_name>,
*vec_widen_umult_even_v8si<mask_name>,
*vec_widen_umult_even_v4si<mask_name>,
*vec_widen_smult_even_v16si<mask_name>,
*vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
*avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
*avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
*sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
*sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
<avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
*sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
*<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
!(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
ix86_binary_operator_ok.  Formatting fixes.
(*<plusminus_insn><mode>3<mask_name><round_name>,
*<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
fixes.

From-SVN: r254509

6 years agors6000: Use isel for the cstore patterns
Segher Boessenkool [Tue, 7 Nov 2017 19:33:57 +0000 (20:33 +0100)]
rs6000: Use isel for the cstore patterns

We currently generate (sometimes pretty long) sequences of integer
insns to implement the various cstore patterns.  If the CPU has a fast
isel, we can use that at the same latency as of just two integer insns
(you also get a load immediate of 1, and sometimes one of 0 as well,
but those are not in the critical path: they don't depend on any other
instruction).

There are a few patterns that already are implemented with just two
instructions; so don't use isel in that case (I still need to check
all lt/gt/ltu/gtu/le/leu/ge/geu patterns with all SI/DI combinations,
one or two might be better without isel).

This introduces a new GPR2 mode iterator, for those patterns that use
two independent integer modes.

* config/rs6000/rs6000.md (GPR2): New mode_iterator.
("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
eq and ne if TARGET_ISEL.
(cmp): New code_iterator.
(UNS, UNSU_, UNSIK): New code_attrs.
(<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
("eq<mode>3"): New define_expand, rename the define_insn_and_split
to...
("eq<mode>3"): ... this.
("ne<mode>3"): New define_expand, rename the define_insn_and_split
to...
("ne<mode>3"): ... this.

From-SVN: r254508

6 years agoFix SSE bits dependencies.
Julia Koval [Tue, 7 Nov 2017 19:11:08 +0000 (20:11 +0100)]
Fix SSE bits dependencies.

gcc/
PR target/82812
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
(ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
* config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
* config/i386/i386.opt: Ditto.
* config/i386/i386.c (ix86_target_string): Ditto.
(ix86_option_override_internal): Ditto.
(ix86_init_mpx_builtins): Move MPX to args2.
(ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
__builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
__builtin_ia32_vgf2p8affineinvqb_v32qi,
__builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
__builtin_ia32_vgf2p8affineinvqb_v16qi,
__builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.

From-SVN: r254507

6 years agoCheck for S_ISSOCK before use
Jonathan Wakely [Tue, 7 Nov 2017 19:08:06 +0000 (19:08 +0000)]
Check for S_ISSOCK before use

* src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
S_ISSOCK when defined.

From-SVN: r254506

6 years agore PR target/80425 (Extra inter-unit register move with zero-extension)
Uros Bizjak [Tue, 7 Nov 2017 18:51:22 +0000 (19:51 +0100)]
re PR target/80425 (Extra inter-unit register move with zero-extension)

PR target/80425
* config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
(zero-extendsidi peephole2): Remove peephole.

testsuite/ChangeLog:

PR target/80425
* gcc.target/i386/pr80425-3.c: New test.

From-SVN: r254505

6 years agocompiler: don't double count "." in nested_function_num
Ian Lance Taylor [Tue, 7 Nov 2017 18:19:19 +0000 (18:19 +0000)]
compiler: don't double count "." in nested_function_num

    Nested functions are named "outerfunc.$nestedN", where N is a
    number. nested_function_num extracts that number. The name is
    first passed to unpack_hidden_name, which handles the "." and
    should result "$nestedN". Don't expect the "." again.

    This fixes assertion failure when escape analysis is enabled
    and -fgo-debug-escape is on. The failure looks

    go1: internal compiler error: in nested_function_num, at go/gofrontend/names.cc:241
    0x7bd7d3 Gogo::nested_function_num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)

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

From-SVN: r254504

6 years agore PR c/53037 (warn_if_not_aligned(X))
Eric Botcazou [Tue, 7 Nov 2017 17:37:29 +0000 (17:37 +0000)]
re PR c/53037 (warn_if_not_aligned(X))

PR c/53037
* stor-layout.c: Include attribs.h.
(handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
explicit lookup of "aligned" attribute.

From-SVN: r254503

6 years ago* g++.dg/pr50763-3.C (evalPoint): Return a value.
Andreas Schwab [Tue, 7 Nov 2017 17:27:46 +0000 (17:27 +0000)]
* g++.dg/pr50763-3.C (evalPoint): Return a value.

From-SVN: r254502

6 years agoRISC-V: Implement movmemsi
Andrew Waterman [Tue, 7 Nov 2017 17:09:39 +0000 (17:09 +0000)]
RISC-V: Implement movmemsi

Without this we aren't getting proper memcpy inlining on RISC-V systems,
which is particularly disastrous for Dhrystone performance on RV32IM
systems.

gcc/ChangeLog

2017-11-07  Andrew Waterman  <andrew@sifive.com>

        * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New
        prototype.
        (riscv_expand_block_move): Likewise.
        gcc/config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
        implementation.
        (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
        (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
        gcc/config/riscv/riscv.c (riscv_block_move_straight): New
        function.
        (riscv_adjust_block_mem): Likewise.
        (riscv_block_move_loop): Likewise.
        (riscv_expand_block_move): Likewise.
        gcc/config/riscv/riscv.md (movmemsi): New pattern.

From-SVN: r254501

6 years agoRISC-V: Define MUSL_DYNAMIC_LINKER
Michael Clark [Tue, 7 Nov 2017 16:58:37 +0000 (16:58 +0000)]
RISC-V: Define MUSL_DYNAMIC_LINKER

Use no suffix at all in the musl dynamic linker name for hard
float ABI. Use -sf and -sp suffixes in musl dynamic linker name
for soft float and single precision ABIs. The following table
outlines the musl interpreter names for the RISC-V ABI names.

musl interpreter        | RISC-V ABI
----------------------- | -------------
ld-musl-riscv32.so.1    | riscv32-ilp32d
ld-musl-riscv64.so.1    | riscv64-lp64d
ld-musl-riscv32-sf.so.1 | riscv32-ilp32
ld-musl-riscv64-sf.so.1 | riscv64-lp64
ld-musl-riscv32-sp.so.1 | riscv32-ilp32f
ld-musl-riscv64-sp.so.1 | riscv64-lp64f

gcc/ChangeLog

2017-11-06  Michael Clark  <michaeljclark@mac.com>

        * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
        (MUSL_DYNAMIC_LINKER): Likewise.

From-SVN: r254500

6 years ago[AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand
Richard Sandiford [Tue, 7 Nov 2017 16:08:47 +0000 (16:08 +0000)]
[AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand

Some of the shift expanders accepted nonmemory_operands but were only
able to handle register_operands or CONST_INTs.  This is probably
academic without SVE, since we're not likely to see shifts by other
types of constant (const_wide_ints, consts, etc).  But for SVE,
it's possible for a vectorised shift induction to have a CONST_POLY_INT
shift amount.

This patch makes the expanders use aarch64_reg_or_imm instead.

2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
(rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
nonmmory_operand.

From-SVN: r254499

6 years agomatch.pd: Fix build.
Richard Biener [Tue, 7 Nov 2017 12:52:35 +0000 (12:52 +0000)]
match.pd: Fix build.

2017-11-07  Richard Biener  <rguenther@suse.de>

* match.pd: Fix build.

From-SVN: r254498

6 years agoPR71026: Canonicalize negates in division
Wilco Dijkstra [Tue, 7 Nov 2017 12:38:55 +0000 (12:38 +0000)]
PR71026: Canonicalize negates in division

Canonicalize x / (- y) into (-x) / y.

This moves negates out of the RHS of a division in order to
allow further simplifications and potentially more reciprocal CSEs.

2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
    Jackson Woodruff  <jackson.woodruff@arm.com>

    gcc/
PR tree-optimization/71026
* match.pd: Canonicalize negate in division.

    testsuite/
PR 71026/tree-optimization/71026
* gcc.dg/div_neg: New test.

From-SVN: r254497

6 years agoPR80131: Simplification of 1U << (31 - x)
Sudakshina Das [Tue, 7 Nov 2017 12:23:38 +0000 (12:23 +0000)]
PR80131: Simplification of 1U << (31 - x)

Currently the code A << (B - C) is not simplified.
However at least a more specific case of 1U << (C -x) where
C = precision(type) - 1 can be simplified to (1 << C) >> x.

This is done by adding a new simplification rule in match.pd.

2017-11-07  Sudakshina Das  <sudi.das@arm.com>

    gcc/
PR middle-end/80131
* match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.

    testsuite/
PR middle-end/80131
* testsuite/gcc.dg/pr80131-1.c: New Test.

From-SVN: r254496

6 years agoMore bitop simplifications in match.pd
Marc Glisse [Tue, 7 Nov 2017 11:08:06 +0000 (12:08 +0100)]
More bitop simplifications in match.pd

2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
(a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.

gcc/testsuite/
* gcc.dg/tree-ssa/bitops-1.c: New file.

From-SVN: r254495

6 years agoMore fold_negate in match.pd
Marc Glisse [Tue, 7 Nov 2017 11:04:14 +0000 (12:04 +0100)]
More fold_negate in match.pd

gcc/ChangeLog:

2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

* fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
non-scalar integral types.
* match.pd (negate_expr_p): Handle MINUS_EXPR.
(-(A-B), -(~A)): New transformations.

gcc/testsuite/ChangeLog:

2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

* gcc.dg/tree-ssa/negminus.c: New test.

From-SVN: r254494

6 years ago[powerpcspe] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS
Tom de Vries [Tue, 7 Nov 2017 11:00:46 +0000 (11:00 +0000)]
[powerpcspe] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS

2017-11-07  Tom de Vries  <tom@codesourcery.com>

* config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
semicolon after "do {} while (0)".
* config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.

From-SVN: r254493

6 years ago[rs6000] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS
Tom de Vries [Tue, 7 Nov 2017 09:22:11 +0000 (09:22 +0000)]
[rs6000] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS

2017-11-07  Tom de Vries  <tom@codesourcery.com>

* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
after "do {} while (0)".
* config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
* config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.

From-SVN: r254492

6 years ago[libgcc, rs6000] Remove semicolon after do {} while (0) in REGISTER_CFA_OFFSET_FOR
Tom de Vries [Tue, 7 Nov 2017 09:21:40 +0000 (09:21 +0000)]
[libgcc, rs6000] Remove semicolon after do {} while (0) in REGISTER_CFA_OFFSET_FOR

2017-11-07  Tom de Vries  <tom@codesourcery.com>

* config/rs6000/aix-unwind.h (REGISTER_CFA_OFFSET_FOR): Remove semicolon
after "do {} while (0)".

From-SVN: r254491

6 years ago[arm] Remove semicolon after while {} do (0) in HANDLE_NARROW_SHIFT_ARITH
Tom de Vries [Tue, 7 Nov 2017 08:11:54 +0000 (08:11 +0000)]
[arm] Remove semicolon after while {} do (0) in HANDLE_NARROW_SHIFT_ARITH

2017-11-07  Tom de Vries  <tom@codesourcery.com>

PR other/82784
* config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
"while {} do (0)".
(arm_rtx_costs_internal): Add missing semicolon after
HANDLE_NARROW_SHIFT_ARITH call.

From-SVN: r254490

6 years ago[libgcc] Remove semicolon after do {} while (0) in FP_HANDLE_EXCEPTIONS
Tom de Vries [Tue, 7 Nov 2017 08:11:43 +0000 (08:11 +0000)]
[libgcc] Remove semicolon after do {} while (0) in FP_HANDLE_EXCEPTIONS

2017-11-07  Tom de Vries  <tom@codesourcery.com>

PR other/82784
* config/aarch64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Remove
semicolon after "do {} while (0)".
* config/i386/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
* config/ia64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
* config/mips/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
* config/rs6000/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.

From-SVN: r254489

6 years agoP0704R1 - fixing const-qualified pointers to members
Jason Merrill [Tue, 7 Nov 2017 05:30:40 +0000 (00:30 -0500)]
P0704R1 - fixing const-qualified pointers to members

* typeck2.c (build_m_component_ref): Also accept in lower stds with
a pedwarn.

From-SVN: r254487

6 years agoRequire ngettext in test of system gettext implementation
Alan Modra [Tue, 7 Nov 2017 04:54:01 +0000 (15:24 +1030)]
Require ngettext in test of system gettext implementation

gcc currently uses ngettext in a number of places (gcc/cp/pt.c,
gcc/diagnostic.c, gcc/collect2.c).  Apparently there are (or used to
be) gettext implementations that lack ngettext.  See config/gettext.m4.

This patch arranges for intl/ to be compiled when the system gettext
lacks ngettext.

* configure.ac: Invoke AM_GNU_GETTEXT with need_ngettext.
* configure: Regenerate.

From-SVN: r254486

6 years agors6000: Don't clear TARGET_ISEL implicitly
Segher Boessenkool [Tue, 7 Nov 2017 03:45:50 +0000 (04:45 +0100)]
rs6000: Don't clear TARGET_ISEL implicitly

We want to actually use isel, so we shouldn't disable it.  It is
already not set by default on CPUs that don't have it, or where we
do not want to use it.

* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
disable isel if it was not set explicitly.

From-SVN: r254485

6 years agoFT32 makes use of multiple address spaces.
James Bowman [Tue, 7 Nov 2017 01:10:18 +0000 (01:10 +0000)]
FT32 makes use of multiple address spaces.

FT32 makes use of multiple address spaces. When trying to inspect
objects in GDB, GDB was treating them as a straight "const". The cause
seems to be in GCC DWARF2 output.

This output is handled in gcc/gcc/dwarf2out.c, where modified_type_die()
checks that TYPE has qualifiers CV_QUALS. However while TYPE has
ADDR_SPACE qualifiers, the modified_type_die() explicitly discards the
ADDR_SPACE qualifiers.

This patch retains the ADDR_SPACE qualifiers as modified_type_die()
outputs the DWARF type tree.  This allows the types to match, and correct
type information for the object is emitted.

[gcc]

2017-11-06  James Bowman  <james.bowman@ftdichip.com>

* gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE
qualifiers.
        (add_type_attribute) likewise.

From-SVN: r254484

6 years agoDaily bump.
GCC Administrator [Tue, 7 Nov 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r254483

6 years agoi386: Use reference of struct ix86_frame to avoid copy
H.J. Lu [Mon, 6 Nov 2017 23:04:15 +0000 (23:04 +0000)]
i386: Use reference of struct ix86_frame to avoid copy

When there is no need to make a copy of ix86_frame, we can use reference
of struct ix86_frame to avoid copy.

Tested on x86-64.

* config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
of struct ix86_frame.
(ix86_initial_elimination_offset): Likewise.
(ix86_expand_split_stack_prologue): Likewise.

From-SVN: r254480

6 years agostack-check-12.c: Revert to initial version.
Jeff Law [Mon, 6 Nov 2017 22:44:39 +0000 (15:44 -0700)]
stack-check-12.c: Revert to initial version.

* gcc.target/i386/stack-check-12.c: Revert to initial version.  Then..
Add -fomit-frame-pointer.

From-SVN: r254479

6 years agoUpdate comment in tree-vrp.h
Marc Glisse [Mon, 6 Nov 2017 21:43:00 +0000 (22:43 +0100)]
Update comment in tree-vrp.h

2017-11-06  Marc Glisse  <marc.glisse@inria.fr>

* tree-vrp.h (enum value_range_type): Update stale comment.

From-SVN: r254478

6 years agotr1.cc: Compile with -O0.
François Dumont [Mon, 6 Nov 2017 21:15:48 +0000 (21:15 +0000)]
tr1.cc: Compile with -O0.

2017-11-06  François Dumont  <fdumont@gcc.gnu.org>

* testsuite/libstdc++-prettyprinters/tr1.cc:  Compile with -O0.

From-SVN: r254477

6 years agocompiler: disable escape analysis for runtime
Ian Lance Taylor [Mon, 6 Nov 2017 21:00:32 +0000 (21:00 +0000)]
compiler: disable escape analysis for runtime

    Currently the runtime is hard-coded to non-escape in various places.
    Don't run escape analysis for runtime.

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

From-SVN: r254476

6 years agolibgo: pass flags to recursive make
Ian Lance Taylor [Mon, 6 Nov 2017 20:59:32 +0000 (20:59 +0000)]
libgo: pass flags to recursive make

    "make check" runs make recursively to check each package. Pass
    the flags through. So it is possible to run "make check" with
    different settings easily.

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

From-SVN: r254475

6 years ago[AArch64] Pass number of units to aarch64_expand_vec_perm(_const)
Richard Sandiford [Mon, 6 Nov 2017 20:02:49 +0000 (20:02 +0000)]
[AArch64] Pass number of units to aarch64_expand_vec_perm(_const)

This patch passes the number of units to aarch64_expand_vec_perm
and aarch64_expand_vec_perm_const, which avoids a to_constant ()
once GET_MODE_NUNITS is variable.

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

gcc/
* config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
(aarch64_expand_vec_perm_const): Take the number of units too.
* config/aarch64/aarch64.c (aarch64_expand_vec_perm)
(aarch64_expand_vec_perm_const): Likewise.
* config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
(vec_perm<mode>): Update accordingly.

Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254469

6 years ago[AArch64] Pass number of units to aarch64_simd_vect_par_cnst_half
Richard Sandiford [Mon, 6 Nov 2017 20:02:35 +0000 (20:02 +0000)]
[AArch64] Pass number of units to aarch64_simd_vect_par_cnst_half

This patch passes the number of units to aarch64_simd_vect_par_cnst_half,
which avoids a to_constant () once GET_MODE_NUNITS is variable.

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

gcc/
* config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
Take the number of units too.
* config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
(aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
but check for a vector mode before rather than after the call.
* config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
(move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
(vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
(vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
(vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
(aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
(widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
(aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
(aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
(aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
(aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
(aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
(aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
(aarch64_sqdmull2_n<mode>): Update accordingly.

Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254468

6 years ago[AArch64] Pass number of units to aarch64_reverse_mask
Richard Sandiford [Mon, 6 Nov 2017 20:02:27 +0000 (20:02 +0000)]
[AArch64] Pass number of units to aarch64_reverse_mask

This patch passes the number of units to aarch64_reverse_mask,
which avoids a to_constant () once GET_MODE_NUNITS is variable.

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

gcc/
* config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
the number of units too.
* config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
* config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
(vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
(vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
(vec_store_lanesxi<mode>): Update accordingly.

Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254467

6 years ago[AArch64] Add an endian_lane_rtx helper routine
Richard Sandiford [Mon, 6 Nov 2017 20:02:10 +0000 (20:02 +0000)]
[AArch64] Add an endian_lane_rtx helper routine

Later patches turn the number of vector units into a poly_int.
We deliberately don't support applying GEN_INT to those (except
in target code that doesn't distinguish between poly_ints and normal
constants); gen_int_mode needs to be used instead.

This patch therefore replaces instances of:

  GEN_INT (ENDIAN_LANE_N (builtin_mode, INTVAL (op[opc])))

with uses of a new endian_lane_rtx function.

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

gcc/
* config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
* config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
* config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
of units rather than the mode.
* config/aarch64/iterators.md (nunits): New mode attribute.
* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
* config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
(aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
(*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
(*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
(*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
(*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
(*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
(*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
(*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
(*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
(reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
(reduc_<maxmin_uns>_scal_<mode>): Likewise.
(*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
(*aarch64_get_lane_zero_extendsi<mode>): Likewise.
(aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
(*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
(aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
(aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
(aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
(aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
(aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
(aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
(aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
(aarch64_sqdmull2_lane<mode>_internal): Likewise.
(aarch64_sqdmull2_laneq<mode>_internal): Likewise.
(aarch64_vec_load_lanesoi_lane<mode>): Likewise.
(aarch64_vec_store_lanesoi_lane<mode>): Likewise.
(aarch64_vec_load_lanesci_lane<mode>): Likewise.
(aarch64_vec_store_lanesci_lane<mode>): Likewise.
(aarch64_vec_load_lanesxi_lane<mode>): Likewise.
(aarch64_vec_store_lanesxi_lane<mode>): Likewise.
(aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
(aarch64_simd_vec_setv2di): Likewise.

Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254466

6 years agoFix ChangeLog entry
Richard Sandiford [Mon, 6 Nov 2017 19:40:43 +0000 (19:40 +0000)]
Fix ChangeLog entry

From-SVN: r254465

6 years agors6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8 definitions.
Carl Love [Mon, 6 Nov 2017 19:35:55 +0000 (19:35 +0000)]
rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8 definitions.

gcc/ChangeLog:

2017-11-06  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
definitions.
(P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
* config/rs6000/altivec.h (vec_revb): Change the #define from power 9
to power 8.
* config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
extern declaration.
* config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
* config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
Add power 8 macro expansions.
(BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
* config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
power 8 instructions.  (VSX_XXBR): Add iterator.

gcc/testsuite/ChangeLog:

2017-11-06  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-revb-runnable.c: New runnable test file.

From-SVN: r254464

6 years ago[Arm] Cleanup IT attributes
Wilco Dijkstra [Mon, 6 Nov 2017 19:26:27 +0000 (19:26 +0000)]
[Arm] Cleanup IT attributes

A recent change to remove the movdi_vfp_cortexa8 meant that ldrd was used in
ITs block even when arm_restrict_it was enabled.  Rather than just fixing this
latent issue, change the default of predicable_short_it to "no" so that only
16-bit instructions need to be marked with it.  As a result there are far fewer
patterns that need the attribute, and omitting predicable_short_it is no longer
causing issues.

* config/arm/arm.md (predicable_short_it): Change default to "no",
improve documentation, remove uses that are identical to the default.
(enabled_for_depr_it): Rename to enabled_for_short_it.
* gcc/config/arm/arm-fixed.md (predicable_short_it): Remove default uses.
* gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
* gcc/config/arm/sync.md (predicable_short_it): Likewise.
* gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
* gcc/config/arm/vfp.md (predicable_short_it): Likewise.

From-SVN: r254463

6 years agore PR target/82748 (ICE with __builtin_fabsq and __float128 in copy_to_mode_reg,...
Michael Meissner [Mon, 6 Nov 2017 18:31:48 +0000 (18:31 +0000)]
re PR target/82748 (ICE with __builtin_fabsq and __float128 in copy_to_mode_reg, at explow.c:612)

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

PR target/82748
* config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
float128 helper macros, which are no longer used after deleting
the old 'q' built-in functions, and moving the round to odd
built-in functions to being special built-in functions.
(BU_FLOAT128_2): Likewise.
(BU_FLOAT128_1_HW): Likewise.
(BU_FLOAT128_2_HW): Likewise.
(BU_FLOAT128_3_HW): Likewise.
(FABSQ): Delete old 'q' built-in functions.
(COPYSIGNQ): Likewise.
(SQRTF128_ODD): Move round to odd built-in functions to be
special built-in functions, so that we can handle
-mabi=ieeelongdouble.
(TRUNCF128_ODD): Likewise.
(ADDF128_ODD): Likewise.
(SUBF128_ODD): Likewise.
(MULF128_ODD): Likewise.
(DIVF128_ODD): Likewise.
(FMAF128_ODD): Likewise.
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
built-in names to 'f128'.
* config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
old 'q' built-in functions, as the machine independent code for
'f128' built-in functions handles this.
(rs6000_expand_builtin): Add expansion for float128 round to odd
functions, keying off on -mabi=ieeelongdouble of whether to use
the KFmode or TFmode variant.
(rs6000_init_builtins): Initialize the _Float128 round to odd
built-in functions.
* doc/extend.texi (PowerPC Built-in Functions): Document the old
_Float128 'q' built-in functions are now mapped into the new
'f128' built-in functions.

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

PR target/82748
* gcc.target/powerpc/pr82748-1.c: New test.
* gcc.target/powerpc/pr82748-2.c: Likewise.

From-SVN: r254462

6 years agore PR c++/65579 ([C++11] gcc requires definition of a static constexpr member even...
Paolo Carlini [Mon, 6 Nov 2017 17:45:55 +0000 (17:45 +0000)]
re PR c++/65579 ([C++11] gcc requires definition of a static constexpr member even though it is not odr-used)

/cp
2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/65579
* decl2.c (finish_static_data_member_decl): If there's an initializer,
complete the type and re-apply the quals.

/testsuite
2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/65579
* g++.dg/cpp0x/constexpr-template11.C: New.

From-SVN: r254461

6 years agocollect2.c (add_lto_object): Compile for OBJECT_COFF.
David Edelsohn [Mon, 6 Nov 2017 17:24:57 +0000 (17:24 +0000)]
collect2.c (add_lto_object): Compile for OBJECT_COFF.

* collect2.c (add_lto_object): Compile for OBJECT_COFF.
(scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.

From-SVN: r254460

6 years ago* gcc-interface/misc.c (gnat_post_options): Clear warn_return_type.
Eric Botcazou [Mon, 6 Nov 2017 17:23:08 +0000 (17:23 +0000)]
* gcc-interface/misc.c (gnat_post_options): Clear warn_return_type.

From-SVN: r254459

6 years agoipa-fnsummary.c: fix use-after-free crash (PR jit/82826)
David Malcolm [Mon, 6 Nov 2017 16:31:04 +0000 (16:31 +0000)]
ipa-fnsummary.c: fix use-after-free crash (PR jit/82826)

gcc/ChangeLog:
PR jit/82826
* ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
* ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
* toplev.c: Include "ipa-fnsummary.h".
(toplev::finalize): Call ipa_fnsummary_c_finalize.

From-SVN: r254458

6 years agore PR tree-optimization/82838 (ICE in verify_ssa failed w/ store-merging)
Jakub Jelinek [Mon, 6 Nov 2017 16:29:11 +0000 (17:29 +0100)]
re PR tree-optimization/82838 (ICE in verify_ssa failed w/ store-merging)

PR tree-optimization/82838
* gimple-ssa-store-merging.c
(imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
on a separate gimple_seq which is then appended to seq.

* gcc.c-torture/compile/pr82838.c: New test.

From-SVN: r254457

6 years agore PR target/82788 (wrong code with -fstack-clash-protection --param=stack-clash...
Jeff Law [Mon, 6 Nov 2017 15:51:16 +0000 (08:51 -0700)]
re PR target/82788 (wrong code with -fstack-clash-protection --param=stack-clash-protection-probe-interval=10 on simple code)

PR target/82788
* config/i386/i386.c (PROBE_INTERVAL): Remove.
(get_probe_interval): New functions.
(ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
(ix86_adjust_stack_and_probe): Likewise.
(output_adjust_stack_and_probe): Likewise.
(ix86_emit_probe_stack_range): Likewise.
(ix86_expand_prologue): Likewise.

PR target/82788
* gcc.dg/pr82788.c: New test.

From-SVN: r254456

6 years agoCheck in right version of stack-check-12.c
Jeff Law [Mon, 6 Nov 2017 15:49:59 +0000 (08:49 -0700)]
Check in right version of stack-check-12.c

From-SVN: r254455

6 years agoPR82816: Widening multiplies of bitfields
Richard Sandiford [Mon, 6 Nov 2017 14:47:43 +0000 (14:47 +0000)]
PR82816: Widening multiplies of bitfields

In this PR we tried to create a widening multiply of two 3-bit numbers,
but that isn't a widening multiply at the optab/rtl level, since both
the input and output still have the same mode.

We could trap this either in is_widening_mult_p or (as the patch does)
in the routines that actually ask for an optab.  The latter seemed
more natural since is_widening_mult_p doesn't otherwise care about modes.

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

gcc/
PR tree-optimization/82816
* tree-ssa-math-opts.c (convert_mult_to_widen): Return false
if the modes of the two types are the same.
(convert_plusminus_to_widen): Likewise.

gcc/testsuite/
* gcc.c-torture/compile/pr82816.c: New test.

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

6 years ago[gcc]
Bill Schmidt [Mon, 6 Nov 2017 13:47:46 +0000 (13:47 +0000)]
[gcc]

2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
p9_vadu<mode>3.
(usadv16qi): New define_expand.
(usadv8hi): New define_expand.

[gcc/testsuite]

2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/sad-vectorize-1.c: New file.
* gcc.target/powerpc/sad-vectorize-2.c: New file.
* gcc.target/powerpc/sad-vectorize-3.c: New file.
* gcc.target/powerpc/sad-vectorize-4.c: New file.

From-SVN: r254453

6 years agore PR bootstrap/82832 (Broken PGO LTO bootstrap on x86_64 after r254379)
Jan Hubicka [Mon, 6 Nov 2017 13:45:41 +0000 (14:45 +0100)]
re PR bootstrap/82832 (Broken PGO LTO bootstrap on x86_64 after r254379)

PR bootstrap/82832
* ipa-inline-transform.c (update_noncloned_frequencies): Always
scale.
(inline_transform): Likewise.
* predict.c (counts_to_freqs): Remove useless conditional.
* profile-count.h (profile_count::apply_scale): Move sanity check.
* tree-inline.c (copy_bb): Always scale.
(copy_cfg_body): Likewise.

From-SVN: r254452

6 years agoFix -Wreturn-type fallout.
Martin Liska [Mon, 6 Nov 2017 13:41:35 +0000 (14:41 +0100)]
Fix -Wreturn-type fallout.

2017-11-06  Martin Liska  <mliska@suse.cz>

* c-c++-common/cilk-plus/AN/pr57541-2.c (foo1): Return a value
for functions with non-void return type, or change type to void,
or add -Wno-return-type for test.
(foo2): Likewise.
* c-c++-common/cilk-plus/AN/pr57541.c (foo): Likewise.
(foo1): Likewise.
* c-c++-common/cilk-plus/CK/errors.c: Likewise.
* c-c++-common/cilk-plus/CK/pr60197.c: Likewise.
* c-c++-common/cilk-plus/CK/spawn_in_return.c: Likewise.
* c-c++-common/fold-masked-cmp-1.c (test_pic): Likewise.
(test_exe): Likewise.
* c-c++-common/fold-masked-cmp-2.c (test_exe): Likewise.
* g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.cc (my_func): Likewise.
* g++.dg/cilk-plus/CK/pr68997.cc (fa2): Likewise.
* g++.dg/eh/sighandle.C (dosegv): Likewise.
* g++.dg/ext/vector14.C (foo): Likewise.
(main): Likewise.
* g++.dg/graphite/pr41305.C: Likewise.
* g++.dg/graphite/pr42930.C: Likewise.
* g++.dg/opt/pr46640.C (struct QBasicAtomicInt): Likewise.
(makeDir): Likewise.
* g++.dg/other/i386-8.C (foo): Likewise.
* g++.dg/pr45788.C: Likewise.
* g++.dg/pr64688.C (at_c): Likewise.
* g++.dg/pr65032.C (G::DecodeVorbis): Likewise.
* g++.dg/pr71633.C (c3::fn2): Likewise.
* g++.dg/stackprotectexplicit2.C (A): Likewise.
* g++.old-deja/g++.law/weak.C (main): Likewise.
2017-11-06  Martin Liska  <mliska@suse.cz>

* testsuite/libgomp.c++/loop-2.C: Return a value
for functions with non-void return type, or change type to void,
or add -Wno-return-type for test.
* testsuite/libgomp.c++/loop-4.C: Likewise.
* testsuite/libgomp.c++/parallel-1.C: Likewise.
* testsuite/libgomp.c++/shared-1.C: Likewise.
* testsuite/libgomp.c++/single-1.C: Likewise.
* testsuite/libgomp.c++/single-2.C: Likewise.
2017-11-06  Martin Liska  <mliska@suse.cz>

* testsuite/27_io/basic_fstream/cons/char/path.cc (main):
  Return a value for functions with non-void return type,
  or change type to void, or add -Wno-return-type for test.
* testsuite/27_io/basic_ifstream/cons/char/path.cc (main):
Likewise.
* testsuite/27_io/basic_ofstream/open/char/path.cc (main):
Likewise.

From-SVN: r254451

6 years agodeduction.cc: Avoid -Wreturn-type warnings.
Paolo Carlini [Mon, 6 Nov 2017 12:55:35 +0000 (12:55 +0000)]
deduction.cc: Avoid -Wreturn-type warnings.

2017-11-06  Paolo Carlini  <paolo.carlini@oracle.com>

* testsuite/20_util/optional/cons/deduction.cc: Avoid -Wreturn-type
warnings.
* testsuite/20_util/pair/cons/deduction.cc: Likewise.
* testsuite/20_util/pair/traits.cc: Likewise.
* testsuite/20_util/tuple/cons/deduction.cc: Likewise.
* testsuite/20_util/variant/compile.cc: Likewise.
* testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
* testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
Likewise.

From-SVN: r254450

6 years agogcov: New directory.
Eric Botcazou [Mon, 6 Nov 2017 11:41:49 +0000 (11:41 +0000)]
gcov: New directory.

* gnat.dg/gcov: New directory.
* gnat.dg/gcov/gcov.exp: New driver.
* gnat.dg/gcov/check.adb: New test.

From-SVN: r254447

6 years ago[ARM] PR 67591 ARM v8 Thumb IT blocks are deprecated part 2
Christophe Lyon [Mon, 6 Nov 2017 10:43:19 +0000 (10:43 +0000)]
[ARM] PR 67591 ARM v8 Thumb IT blocks are deprecated part 2

2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>

PR target/67591
* config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
attribute.
(*cmp_ite0): Add enabled_for_depr_it attribute.
(*cmp_ite1): Likewise.

From-SVN: r254446

6 years ago[testsuite] Fix directives order
Christophe Lyon [Mon, 6 Nov 2017 10:40:43 +0000 (10:40 +0000)]
[testsuite] Fix directives order

2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.c-torture/execute/pr23135.c: Move dg-add-options after
dg-options.
* gcc.dg/torture/pr78305.c: Move dg-do as first directive.
* gcc.misc-tests/gcov-3.c: Likewise.
* gcc.target/arm/cmse/baseline/cmse-11.c: Move dg-options before dg-add-options.
* gcc.target/arm/cmse/baseline/cmse-13.c: Likewise.
* gcc.target/arm/cmse/baseline/cmse-2.c: Likewise.
* gcc.target/arm/cmse/baseline/cmse-6.c: Likewise.
* gcc.target/arm/cmse/baseline/softfp.c: Likewise.
* gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Likewise.
* gcc.target/arm/cmse/mainline/hard-sp/cmse-5.c: Likewise.
* gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Likewise.
* gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Likewise.
* gcc.target/arm/cmse/mainline/hard/cmse-13.c: Likewise.
* gcc.target/arm/cmse/mainline/hard/cmse-5.c: Likewise.
* gcc.target/arm/cmse/mainline/hard/cmse-7.c: Likewise.
* gcc.target/arm/cmse/mainline/hard/cmse-8.c: Likewise.
* gcc.target/arm/cmse/mainline/soft/cmse-13.c: Likewise.
* gcc.target/arm/cmse/mainline/soft/cmse-5.c: Likewise.
* gcc.target/arm/cmse/mainline/soft/cmse-7.c: Likewise.
* gcc.target/arm/cmse/mainline/soft/cmse-8.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp-sp/cmse-5.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp/cmse-13.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp/cmse-5.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp/cmse-7.c: Likewise.
* gcc.target/arm/cmse/mainline/softfp/cmse-8.c: Likewise.
* gcc.target/arm/lp1189445.c: Likewise.

From-SVN: r254445

6 years agore PR c++/80955 (Macros expanded in definition of user-defined literals)
Mukesh Kapoor [Mon, 6 Nov 2017 10:33:41 +0000 (10:33 +0000)]
re PR c++/80955 (Macros expanded in definition of user-defined literals)

/libcpp
2017-11-06  Mukesh Kapoor  <mukesh.kapoor@oracle.com>

PR c++/80955
* lex.c (lex_string): When checking for a valid macro for the
warning related to -Wliteral-suffix (CPP_W_LITERAL_SUFFIX),
check that the macro name does not start with an underscore
before calling is_macro().

/gcc/testsuite
2017-11-06  Mukesh Kapoor  <mukesh.kapoor@oracle.com>

PR c++/80955
* g++.dg/cpp0x/udlit-macros.C: New.

From-SVN: r254443

6 years ago[multiple changes]
Paul Thomas [Mon, 6 Nov 2017 09:54:09 +0000 (09:54 +0000)]
[multiple changes]

 2017-11-06  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/69739
* trans-expr.c (gfc_map_intrinsic_function): Return false for
bounds without the DIM argument instead of ICEing.

2017-11-06  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/69739
* gfortran.dg/pr69739.f90: New test.

From-SVN: r254441

6 years agoFix test-suite fallout of default -Wreturn-type.
Martin Liska [Mon, 6 Nov 2017 09:05:03 +0000 (10:05 +0100)]
Fix test-suite fallout of default -Wreturn-type.

2017-11-06  Martin Liska  <mliska@suse.cz>

* c-c++-common/Wimplicit-fallthrough-8.c: Return a value for
functions with non-void return type, or change type to void, or
add -Wno-return-type for test.
* c-c++-common/asan/pr63638.c (f): Likewise.
* c-c++-common/goacc/parallel-1.c (firstprivate): Likewise.
* c-c++-common/gomp/sink-1.c (depend): Likewise.
* c-c++-common/missing-symbol.c: Likewise.
* c-c++-common/pr36513-2.c (main2): Likewise.
* c-c++-common/pr36513.c (main1): Likewise.
* c-c++-common/pr49706-2.c: Likewise.
* c-c++-common/pr65120.c: Likewise.
* c-c++-common/tm/volatile-1.c (f): Likewise.
* c-c++-common/vector-1.c (f): Likewise.
* c-c++-common/vector-2.c (f): Likewise.
* g++.dg/abi/abi-tag14.C (f): Likewise.
(g): Likewise.
* g++.dg/abi/abi-tag18.C (f): Likewise.
* g++.dg/abi/abi-tag18a.C (f): Likewise.
* g++.dg/abi/covariant2.C (struct c3): Likewise.
(struct c7): Likewise.
* g++.dg/abi/covariant3.C (c1::f6): Likewise.
* g++.dg/abi/mangle7.C (f1): Likewise.
* g++.dg/asan/pr81340.C (class e): Likewise.
(e::f): Likewise.
* g++.dg/concepts/fn8.C (struct S): Likewise.
* g++.dg/concepts/pr65575.C (f): Likewise.
* g++.dg/concepts/template-parm11.C (f): Likewise.
* g++.dg/conversion/op6.C: Likewise.
* g++.dg/cpp0x/Wunused-variable-1.C (foo): Likewise.
* g++.dg/cpp0x/access01.C: Likewise.
* g++.dg/cpp0x/alignas3.C (class alignas): Likewise.
* g++.dg/cpp0x/auto2.C (f): Likewise.
(struct A): Likewise.
(main): Likewise.
* g++.dg/cpp0x/constexpr-array17.C (struct D): Likewise.
* g++.dg/cpp0x/constexpr-defarg2.C (a): Likewise.
(B::foo): Likewise.
(B::bar): Likewise.
* g++.dg/cpp0x/constexpr-memfn1.C (struct Y): Likewise.
* g++.dg/cpp0x/dc1.C (struct D): Likewise.
* g++.dg/cpp0x/dc3.C (struct D): Likewise.
* g++.dg/cpp0x/decltype12.C: Likewise.
* g++.dg/cpp0x/decltype17.C (main): Likewise.
* g++.dg/cpp0x/decltype3.C: Likewise.
* g++.dg/cpp0x/decltype41.C (struct C): Likewise.
(struct D): Likewise.
* g++.dg/cpp0x/defaulted28.C (f): Likewise.
* g++.dg/cpp0x/enum_base3.C (struct D): Likewise.
* g++.dg/cpp0x/gen-attrs-4.C (five): Likewise.
* g++.dg/cpp0x/initlist96.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-58566.C (struct A): Likewise.
* g++.dg/cpp0x/lambda/lambda-conv10.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-conv12.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-defarg3.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-ice3.C (Klass::dostuff): Likewise.
* g++.dg/cpp0x/lambda/lambda-ice5.C (foo): Likewise.
* g++.dg/cpp0x/lambda/lambda-nested2.C (f1): Likewise.
* g++.dg/cpp0x/lambda/lambda-template12.C (class X): Likewise.
* g++.dg/cpp0x/lambda/lambda-template2.C (struct T): Likewise.
* g++.dg/cpp0x/lambda/lambda-this12.C (struct A): Likewise.
* g++.dg/cpp0x/nolinkage1.C (main): Likewise.
* g++.dg/cpp0x/nolinkage1a.cc (dummy): Likewise.
* g++.dg/cpp0x/nsdmi-template5.C: Likewise.
* g++.dg/cpp0x/parse1.C (B::B): Likewise.
* g++.dg/cpp0x/pr34054.C (foo): Likewise.
* g++.dg/cpp0x/pr47416.C: Likewise.
* g++.dg/cpp0x/pr58781.C: Likewise.
* g++.dg/cpp0x/pr70538.C: Likewise.
* g++.dg/cpp0x/pr81325.C: Likewise.
* g++.dg/cpp0x/range-for13.C (begin): Likewise.
(end): Likewise.
* g++.dg/cpp0x/range-for14.C (begin): Likewise.
(end): Likewise.
* g++.dg/cpp0x/rv2n.C (test2_18): Likewise.
(test2_28): Likewise.
(test2_38): Likewise.
(test2_58): Likewise.
(test2_68): Likewise.
(test2_78): Likewise.
* g++.dg/cpp0x/rv3n.C (test3_128): Likewise.
* g++.dg/cpp0x/static_assert10.C (foo): Likewise.
* g++.dg/cpp0x/static_assert11.C (struct A): Likewise.
* g++.dg/cpp0x/static_assert12.C: Likewise.
* g++.dg/cpp0x/static_assert13.C: Likewise.
* g++.dg/cpp0x/trailing1.C (struct A): Likewise.
* g++.dg/cpp0x/trailing5.C (foo): Likewise.
(bar): Likewise.
* g++.dg/cpp0x/variadic114.C: Likewise.
* g++.dg/cpp0x/variadic57.C (Dims...>::foo): Likewise.
(bar): Likewise.
* g++.dg/cpp0x/variadic65.C: Likewise.
* g++.dg/cpp0x/variadic66.C (bind): Likewise.
* g++.dg/cpp0x/variadic97.C: Likewise.
* g++.dg/cpp0x/variadic98.C (__attribute__): Likewise.
* g++.dg/cpp1y/auto-fn11.C: Likewise.
* g++.dg/cpp1y/auto-fn29.C: Likewise.
* g++.dg/cpp1y/auto-fn38.C: Likewise.
* g++.dg/cpp1y/constexpr-return2.C: Likewise.
* g++.dg/cpp1y/lambda-init7.C (foo): Likewise.
* g++.dg/cpp1y/pr63996.C: Likewise.
* g++.dg/cpp1y/pr65202.C: Likewise.
* g++.dg/cpp1y/pr66443-cxx14.C (Ok): Likewise.
* g++.dg/cpp1y/pr79253.C (struct D): Likewise.
* g++.dg/cpp1y/static_assert1.C: Likewise.
* g++.dg/cpp1y/static_assert2.C: Likewise.
* g++.dg/cpp1y/var-templ44.C: Likewise.
* g++.dg/cpp1z/fold6.C (f): Likewise.
* g++.dg/cpp1z/inline-var2.C (foo): Likewise.
* g++.dg/cpp1z/lambda-this1.C (struct B): Likewise.
* g++.dg/cpp1z/static_assert-nomsg.C: Likewise.
* g++.dg/debug/dwarf-eh-personality-1.C (foobar): Likewise.
* g++.dg/debug/dwarf2/dwarf4-typedef.C (struct B): Likewise.
* g++.dg/debug/dwarf2/icf.C: Likewise.
* g++.dg/debug/dwarf2/pr61433.C (main): Likewise.
* g++.dg/debug/nullptr01.C (g): Likewise.
* g++.dg/debug/pr16792.C (foo): Likewise.
* g++.dg/debug/pr46241.C (class btCollisionWorld): Likewise.
* g++.dg/debug/pr46338.C (struct S): Likewise.
* g++.dg/debug/pr47106.C (baz): Likewise.
(bar): Likewise.
(foo): Likewise.
* g++.dg/debug/pr71057.C (fn1): Likewise.
* g++.dg/debug/pr71432.C (class CLIParameterType): Likewise.
(CLIParameterType::checkSwitched): Likewise.
* g++.dg/debug/pr80461.C (struct B): Likewise.
* g++.dg/dfp/44473-1.C (bar): Likewise.
* g++.dg/dfp/44473-2.C (bar): Likewise.
(foo): Likewise.
* g++.dg/eh/builtin1.C: Likewise.
* g++.dg/eh/builtin2.C: Likewise.
* g++.dg/eh/builtin3.C: Likewise.
* g++.dg/eh/pr45569.C (j): Likewise.
* g++.dg/eh/unwind2.C: Likewise.
* g++.dg/expr/bitfield11.C: Likewise.
* g++.dg/expr/static_cast7.C (f): Likewise.
* g++.dg/ext/altivec-14.C: Likewise.
* g++.dg/ext/asm13.C (fn1): Likewise.
* g++.dg/ext/builtin-object-size3.C: Likewise.
* g++.dg/ext/has_nothrow_assign_odr.C (main): Likewise.
(S::operator=): Likewise.
* g++.dg/ext/label7.C (f): Likewise.
* g++.dg/ext/label8.C (f): Likewise.
* g++.dg/ext/tmplattr7.C (test): Likewise.
* g++.dg/ext/vector8.C (f): Likewise.
* g++.dg/ext/visibility/anon1.C: Likewise.
* g++.dg/ext/visibility/anon2.C (f): Likewise.
* g++.dg/ext/visibility/namespace1.C (__attribute): Likewise.
* g++.dg/ext/vla16.C (fn1): Likewise.
* g++.dg/goacc/reference.C: Likewise.
* g++.dg/gomp/pr37189.C: Likewise.
* g++.dg/gomp/pr39495-1.C: Likewise.
* g++.dg/gomp/pr39495-2.C: Likewise.
* g++.dg/gomp/pr82054.C: Likewise.
* g++.dg/inherit/covariant10.C (struct c6): Likewise.
(struct c17): Likewise.
* g++.dg/inherit/covariant11.C (struct c1): Likewise.
(struct c3): Likewise.
(struct c11): Likewise.
(struct c15): Likewise.
* g++.dg/inherit/protected1.C (A::operator==): Likewise.
* g++.dg/init/inline1.C (struct A): Likewise.
* g++.dg/init/new18.C: Likewise.
* g++.dg/init/reference2.C (f): Likewise.
* g++.dg/init/reference3.C: Likewise.
* g++.dg/init/switch1.C (f): Likewise.
* g++.dg/ipa/devirt-10.C (struct wxDCBase): Likewise.
* g++.dg/ipa/devirt-13.C (main): Likewise.
* g++.dg/ipa/devirt-14.C (main): Likewise.
* g++.dg/ipa/devirt-15.C (main): Likewise.
* g++.dg/ipa/devirt-16.C (main): Likewise.
* g++.dg/ipa/devirt-17.C (main): Likewise.
* g++.dg/ipa/devirt-18.C (main): Likewise.
* g++.dg/ipa/devirt-19.C: Likewise.
* g++.dg/ipa/devirt-21.C (main): Likewise.
* g++.dg/ipa/devirt-23.C (main): Likewise.
* g++.dg/ipa/devirt-38.C: Likewise.
* g++.dg/ipa/devirt-40.C (A::m_fn1): Likewise.
* g++.dg/ipa/devirt-41.C (main): Likewise.
* g++.dg/ipa/devirt-42.C (main): Likewise.
* g++.dg/ipa/devirt-44.C (struct A): Likewise.
(main): Likewise.
* g++.dg/ipa/devirt-45.C (struct A): Likewise.
(main): Likewise.
* g++.dg/ipa/devirt-48.C (struct B): Likewise.
(struct D): Likewise.
* g++.dg/ipa/devirt-52.C: Likewise.
* g++.dg/ipa/nothrow-1.C (main): Likewise.
* g++.dg/ipa/pr43812.C (LocalSurface::bbox): Likewise.
* g++.dg/ipa/pr44372.C: Likewise.
* g++.dg/ipa/pr45572-1.C (fgetc_unlocked): Likewise.
(putc_unlocked): Likewise.
(getline): Likewise.
(ferror_unlocked): Likewise.
* g++.dg/ipa/pr58371.C: Likewise.
* g++.dg/ipa/pr59176.C: Likewise.
* g++.dg/ipa/pr60640-1.C (class G): Likewise.
* g++.dg/ipa/pr61540.C (struct top): Likewise.
* g++.dg/ipa/pr63470.C (class FTjackSupport): Likewise.
* g++.dg/ipa/pr63587-1.C: Likewise.
* g++.dg/ipa/pr63587-2.C: Likewise.
* g++.dg/ipa/pr63838.C (__attribute__): Likewise.
* g++.dg/ipa/pr63894.C (J::m_fn3): Likewise.
* g++.dg/ipa/pr64068.C (class A): Likewise.
(A::m_fn2): Likewise.
(class C): Likewise.
* g++.dg/ipa/pr64896.C (struct D): Likewise.
* g++.dg/ipa/pr65002.C: Likewise.
* g++.dg/ipa/pr65008.C (__attribute__): Likewise.
* g++.dg/ipa/pr65465.C (struct D): Likewise.
* g++.dg/ipa/pr66896.C (struct A): Likewise.
* g++.dg/ipa/pr68851.C (class G): Likewise.
(C::checkPseudoClass): Likewise.
* g++.dg/ipa/pr78211.C: Likewise.
* g++.dg/ipa/pr79931.C (AttrImpl::insertBefore): Likewise.
* g++.dg/ipa/pure-const-1.C (main): Likewise.
* g++.dg/ipa/pure-const-2.C (main): Likewise.
* g++.dg/ipa/pure-const-3.C (main): Likewise.
* g++.dg/ipa/remref-1.C (main): Likewise.
* g++.dg/ipa/remref-2.C (main): Likewise.
* g++.dg/lookup/builtin2.C (f): Likewise.
* g++.dg/lookup/crash3.C (struct A): Likewise.
(struct B): Likewise.
(crash): Likewise.
* g++.dg/lookup/friend20.C: Likewise.
* g++.dg/lookup/pr80891-5.C (vf2_subgraph_iso): Likewise.
* g++.dg/lookup/struct2.C (A::c): Likewise.
* g++.dg/lto/20080709_0.C (f): Likewise.
* g++.dg/lto/20080907_0.C: Likewise.
* g++.dg/lto/20080915_0.C (struct Baz): Likewise.
* g++.dg/lto/20080916_0.C (g): Likewise.
* g++.dg/lto/20081022_0.C (main): Likewise.
* g++.dg/lto/20081023_0.C (main): Likewise.
* g++.dg/lto/20081118_0.C (foo::method): Likewise.
* g++.dg/lto/20081118_1.C (bar::method): Likewise.
* g++.dg/lto/20081120-1_0.C: Likewise.
* g++.dg/lto/20081120-1_1.C: Likewise.
* g++.dg/lto/20081127_1.C (main): Likewise.
* g++.dg/lto/20081217-2_0.C (struct A): Likewise.
* g++.dg/lto/20090303_0.C: Likewise.
* g++.dg/lto/20090311-1_0.C: Likewise.
* g++.dg/lto/20090312_0.C: Likewise.
* g++.dg/lto/20090315_0.C (main): Likewise.
* g++.dg/lto/20091002-1_0.C: Likewise.
* g++.dg/lto/20091002-2_0.C (class DataArray): Likewise.
* g++.dg/lto/20091002-3_0.C (class DataArray): Likewise.
* g++.dg/lto/20091004-1_0.C: Likewise.
* g++.dg/lto/20091004-2_0.C: Likewise.
* g++.dg/lto/20091004-3_1.C (All_Torus_Intersections): Likewise.
* g++.dg/lto/20100721-1_0.C (__gthread_active_p): Likewise.
* g++.dg/lto/20101010-1_0.C: Likewise.
* g++.dg/lto/20101010-2_0.C: Likewise.
* g++.dg/lto/pr45679-1_0.C: Likewise.
* g++.dg/lto/pr45679-1_1.C: Likewise.
* g++.dg/lto/pr45679-2_0.C: Likewise.
* g++.dg/lto/pr48042_0.C (B::x): Likewise.
* g++.dg/lto/pr51650-1_0.C (fn): Likewise.
(main): Likewise.
* g++.dg/lto/pr51650-3_0.C (fn): Likewise.
(main): Likewise.
* g++.dg/lto/pr63270_1.C: Likewise.
* g++.dg/lto/pr65193_0.C: Likewise.
* g++.dg/lto/pr65302_0.C: Likewise.
* g++.dg/lto/pr65316_0.C: Likewise.
* g++.dg/lto/pr65475c_0.C: Likewise.
* g++.dg/lto/pr65549_0.C (main): Likewise.
* g++.dg/lto/pr69077_0.C (cWeightedStdDev::netPack): Likewise.
* g++.dg/lto/pr69589_0.C: Likewise.
* g++.dg/opt/combine.C (qvariant_cast): Likewise.
(QScriptDebuggerBackendPrivate::trace): Likewise.
* g++.dg/opt/complex3.C (j): Likewise.
* g++.dg/opt/covariant1.C (struct T): Likewise.
* g++.dg/opt/declone3.C (Item::m_fn1): Likewise.
* g++.dg/opt/dump1.C (__attribute__): Likewise.
* g++.dg/opt/inline15.C (struct C): Likewise.
(fn2): Likewise.
* g++.dg/opt/local1.C (h): Likewise.
* g++.dg/opt/memcpy1.C (csBoxClipper::Clip): Likewise.
* g++.dg/opt/new1.C: Likewise.
* g++.dg/opt/nrv8.C (main): Likewise.
* g++.dg/opt/pr23299.C (struct A): Likewise.
(struct B): Likewise.
(struct C): Likewise.
* g++.dg/opt/pr27826.C (struct Geometry): Likewise.
* g++.dg/opt/pr44919.C (back_inserter): Likewise.
* g++.dg/opt/pr47615.C (main): Likewise.
* g++.dg/opt/pr55329.C (struct A): Likewise.
* g++.dg/opt/pr61456.C (Set): Likewise.
* g++.dg/opt/pr65003.C (D::foo): Likewise.
(F::foo): Likewise.
* g++.dg/opt/pr65554.C: Likewise.
* g++.dg/opt/pr69432.C (struct C): Likewise.
* g++.dg/opt/pr78373.C (struct D): Likewise.
(Traits>::m_fn4): Likewise.
* g++.dg/opt/pr79267.C (struct F): Likewise.
* g++.dg/opt/pr82159-2.C: Likewise.
* g++.dg/other/array3.C (reserve): Likewise.
* g++.dg/other/crash-5.C (f): Likewise.
* g++.dg/other/crash-8.C: Likewise.
* g++.dg/other/error34.C (S): Likewise.
* g++.dg/other/pr22003.C (c3::func): Likewise.
* g++.dg/other/pr24623.C (RefCountPointer): Likewise.
* g++.dg/other/pr29610.C (struct __normal_iterator): Likewise.
(Painter::for_each): Likewise.
(Painter::redraw_window): Likewise.
* g++.dg/other/pr42645-1.C (struct S): Likewise.
* g++.dg/other/pr42645-2.C (foo): Likewise.
(f3): Likewise.
* g++.dg/other/pr52048.C: Likewise.
* g++.dg/other/typedef3.C (XalanCProcessor::getParseOption): Likewise.
* g++.dg/overload/defarg4.C (class foo): Likewise.
(bar::Initialize): Likewise.
* g++.dg/overload/operator5.C (equalIgnoringCase): Likewise.
* g++.dg/overload/ref-conv1.C: Likewise.
* g++.dg/overload/template5.C (test): Likewise.
* g++.dg/parse/crash40.C (class AAA): Likewise.
* g++.dg/parse/crash61.C: Likewise.
* g++.dg/parse/crash67.C: Likewise.
* g++.dg/parse/ctor5.C: Likewise.
* g++.dg/parse/defarg4.C (Foo): Likewise.
* g++.dg/parse/defarg6.C: Likewise.
* g++.dg/parse/error5.C (class Foo): Likewise.
* g++.dg/parse/expr2.C (foo): Likewise.
* g++.dg/parse/friend7.C: Likewise.
* g++.dg/parse/namespace1.C (bar): Likewise.
* g++.dg/parse/namespace9.C (g): Likewise.
* g++.dg/parse/ret-type2.C: Likewise.
* g++.dg/parse/typedef8.C (foo): Likewise.
* g++.dg/pch/static-1.C (LocalStaticTest): Likewise.
(main): Likewise.
* g++.dg/plugin/diagnostic-test-expressions-1.C (test_structure_references): Likewise.
(test_postfix_incdec): Likewise.
(test_sizeof): Likewise.
(test_alignof): Likewise.
(test_prefix_incdec): Likewise.
* g++.dg/plugin/dumb-plugin-test-1.C (func): Likewise.
* g++.dg/plugin/self-assign-test-1.C (func): Likewise.
* g++.dg/plugin/self-assign-test-2.C (func): Likewise.
* g++.dg/plugin/self-assign-test-3.C (func): Likewise.
* g++.dg/pr55513.C (main): Likewise.
* g++.dg/pr55604.C (main): Likewise.
* g++.dg/pr57662.C: Likewise.
* g++.dg/pr58389.C (F::m_fn1): Likewise.
* g++.dg/pr59510.C: Likewise.
* g++.dg/pr67989.C: Likewise.
* g++.dg/pr70590-2.C: Likewise.
* g++.dg/pr70590.C: Likewise.
* g++.dg/pr70965.C (foo): Likewise.
* g++.dg/pr77550.C: Likewise.
* g++.dg/pr80287.C (struct A): Likewise.
* g++.dg/pr80707.C (A::m_fn1): Likewise.
* g++.dg/pr81194.C: Likewise.
* g++.dg/spellcheck-identifiers.C: Likewise.
* g++.dg/tc1/dr152.C: Likewise.
* g++.dg/template/aggr-init1.C (CreateA): Likewise.
* g++.dg/template/anon1.C (struct x): Likewise.
(struct vector): Likewise.
* g++.dg/template/array29.C: Likewise.
* g++.dg/template/array7.C (bar): Likewise.
* g++.dg/template/canon-type-8.C: Likewise.
* g++.dg/template/conv1.C (First::Foo): Likewise.
* g++.dg/template/crash107.C: Likewise.
* g++.dg/template/crash23.C (f): Likewise.
* g++.dg/template/crash8.C (struct bar): Likewise.
* g++.dg/template/defarg4.C (struct A): Likewise.
* g++.dg/template/dependent-expr9.C: Likewise.
* g++.dg/template/error10.C (Btest): Likewise.
* g++.dg/template/friend32.C (f): Likewise.
* g++.dg/template/init6.C (Graph::Inner::get): Likewise.
(main): Likewise.
* g++.dg/template/memfriend7.C (A::h): Likewise.
* g++.dg/template/new10.C (Analyzer::ReadDictionary): Likewise.
* g++.dg/template/nontype12.C (baz): Likewise.
* g++.dg/template/overload12.C (foo2): Likewise.
* g++.dg/template/overload5.C (foo::f): Likewise.
* g++.dg/template/overload8.C (struct A): Likewise.
* g++.dg/template/partial10.C (fn): Likewise.
(main): Likewise.
* g++.dg/template/partial9.C (f): Likewise.
* g++.dg/template/qual1.C (shift_compare): Likewise.
* g++.dg/template/show-template-tree-3.C: Likewise.
* g++.dg/template/sizeof8.C (S<sizeof): Likewise.
* g++.dg/template/sizeof9.C (d): Likewise.
* g++.dg/template/spec6.C: Likewise.
* g++.dg/template/spec7.C (h): Likewise.
* g++.dg/template/typedef8.C: Likewise.
* g++.dg/template/using20.C (f): Likewise.
* g++.dg/template/vla1.C (label): Likewise.
* g++.dg/tm/cgraph_edge.C: Likewise.
* g++.dg/tm/pr46646.C: Likewise.
* g++.dg/tm/pr47554.C (class list): Likewise.
* g++.dg/tm/pr47573.C (getStringHeight): Likewise.
* g++.dg/tm/unsafe1.C (f): Likewise.
* g++.dg/tm/unsafe2.C (g): Likewise.
* g++.dg/torture/pr70971.C: Likewise.
* g++.dg/torture/20070621-1.C: Likewise.
* g++.dg/torture/20090329-1.C: Likewise.
* g++.dg/torture/20141013.C: Likewise.
* g++.dg/torture/pr33134.C (fxsaveGIF): Likewise.
* g++.dg/torture/pr33340.C (new): Likewise.
* g++.dg/torture/pr33627.C (class pf_Frag): Likewise.
* g++.dg/torture/pr34222.C (readFloat): Likewise.
* g++.dg/torture/pr34241.C (test): Likewise.
* g++.dg/torture/pr34641.C: Likewise.
* g++.dg/torture/pr34850.C (OctetString::operator^=): Likewise.
* g++.dg/torture/pr35164-1.C: Likewise.
* g++.dg/torture/pr36745.C: Likewise.
* g++.dg/torture/pr38705.C (S::bar): Likewise.
* g++.dg/torture/pr38811.C (AbcAbcdTracer::TestIsoAbcde): Likewise.
* g++.dg/torture/pr39362.C: Likewise.
* g++.dg/torture/pr39732.C (f): Likewise.
* g++.dg/torture/pr40991.C: Likewise.
* g++.dg/torture/pr41775.C: Likewise.
* g++.dg/torture/pr42183.C: Likewise.
* g++.dg/torture/pr42450.C: Likewise.
* g++.dg/torture/pr42704.C: Likewise.
* g++.dg/torture/pr42760.C (baz): Likewise.
(bar): Likewise.
* g++.dg/torture/pr42773.C (Cell::obscuringCells): Likewise.
* g++.dg/torture/pr42883.C: Likewise.
* g++.dg/torture/pr43905.C (struct Matrix): Likewise.
* g++.dg/torture/pr44148.C: Likewise.
* g++.dg/torture/pr44295.C: Likewise.
* g++.dg/torture/pr44357.C: Likewise.
* g++.dg/torture/pr44813.C: Likewise.
* g++.dg/torture/pr45580.C: Likewise.
* g++.dg/torture/pr45874.C (Mpeg2FrameConstructor::ParsePictureHeader): Likewise.
* g++.dg/torture/pr45877.C: Likewise.
* g++.dg/torture/pr46383.C: Likewise.
* g++.dg/torture/pr46469.C (__attribute__): Likewise.
(identifierByPthreadHandle): Likewise.
* g++.dg/torture/pr47313.C: Likewise.
* g++.dg/torture/pr48271.C: Likewise.
* g++.dg/torture/pr49615.C (Dispatch): Likewise.
(C::f): Likewise.
* g++.dg/torture/pr49770.C (main): Likewise.
* g++.dg/torture/pr49938.C: Likewise.
* g++.dg/torture/pr51436.C: Likewise.
* g++.dg/torture/pr51482.C (anim_track_bez_wvect::tangent): Likewise.
* g++.dg/torture/pr51737.C (id_state::start_file): Likewise.
* g++.dg/torture/pr51959.C: Likewise.
* g++.dg/torture/pr52772.C (class c6): Likewise.
* g++.dg/torture/pr52918-2.C (__cxa_allocate_exception): Likewise.
* g++.dg/torture/pr53011.C: Likewise.
* g++.dg/torture/pr53602.C: Likewise.
* g++.dg/torture/pr53752.C: Likewise.
* g++.dg/torture/pr54838.C: Likewise.
* g++.dg/torture/pr54902.C: Likewise.
* g++.dg/torture/pr56029.C: Likewise.
* g++.dg/torture/pr56768.C (operator!=): Likewise.
* g++.dg/torture/pr57107.C: Likewise.
* g++.dg/torture/pr57140.C: Likewise.
* g++.dg/torture/pr57235.C: Likewise.
* g++.dg/torture/pr58252.C: Likewise.
* g++.dg/torture/pr58555.C: Likewise.
* g++.dg/torture/pr59208.C (get_dbx_doc): Likewise.
* g++.dg/torture/pr60438-1.C (foo): Likewise.
* g++.dg/torture/pr60746.C (Two::run): Likewise.
* g++.dg/torture/pr61554.C: Likewise.
* g++.dg/torture/pr63419.C: Likewise.
* g++.dg/torture/pr63476.C: Likewise.
* g++.dg/torture/pr63512.C (C::m_fn3): Likewise.
* g++.dg/torture/pr64282.C (class H): Likewise.
* g++.dg/torture/pr64378.C (struct top): Likewise.
* g++.dg/torture/pr64565.C: Likewise.
* g++.dg/torture/pr64568-2.C: Likewise.
* g++.dg/torture/pr64669.C (Lex::advance_one_char): Likewise.
* g++.dg/torture/pr64686.C (B::m_fn1): Likewise.
* g++.dg/torture/pr64978.C (B::m_fn2): Likewise.
* g++.dg/torture/pr64995.C (A::m_fn2): Likewise.
* g++.dg/torture/pr65655.C: Likewise.
* g++.dg/torture/pr65851.C: Likewise.
* g++.dg/torture/pr67055.C: Likewise.
* g++.dg/torture/pr67191.C: Likewise.
* g++.dg/torture/pr68852.C: Likewise.
* g++.dg/torture/pr69264.C: Likewise.
* g++.dg/torture/pr77674.C: Likewise.
* g++.dg/torture/pr77947.C (B::m_fn2): Likewise.
* g++.dg/torture/pr78268.C: Likewise.
* g++.dg/torture/pr78507.C: Likewise.
* g++.dg/torture/pr78692.C (F::g): Likewise.
* g++.dg/torture/pr80171.C: Likewise.
* g++.dg/torture/pr82154.C (class f): Likewise.
(f::k): Likewise.
* g++.dg/tree-ssa/copyprop.C: Likewise.
* g++.dg/tree-ssa/pr22444.C: Likewise.
* g++.dg/tree-ssa/pr23948.C (make_scheduler_request): Likewise.
* g++.dg/tree-ssa/pr24172.C (dummy): Likewise.
* g++.dg/tree-ssa/pr24351-3.C: Likewise.
* g++.dg/tree-ssa/pr27283.C: Likewise.
* g++.dg/tree-ssa/pr27291.C: Likewise.
* g++.dg/tree-ssa/pr27548.C: Likewise.
* g++.dg/tree-ssa/pr34355.C (Parse_Float): Likewise.
* g++.dg/tree-ssa/pr42337.C: Likewise.
* g++.dg/tree-ssa/pred-1.C (main): Likewise.
* g++.dg/ubsan/pr65019.C (C::foo): Likewise.
* g++.dg/ubsan/pr65583.C: Likewise.
* g++.dg/vect/pr60836.cc (norm_): Likewise.
* g++.dg/vect/pr68145.cc: Likewise.
* g++.dg/vect/pr70729-nest.cc (my_alloc): Likewise.
* g++.dg/vect/pr70729.cc (my_alloc): Likewise.
* g++.dg/warn/Waddress-3.C: Likewise.
* g++.dg/warn/Wconversion-null-2.C (warn_for___null): Likewise.
* g++.dg/warn/Wnull-conversion-2.C (main): Likewise.
* g++.dg/warn/Wparentheses-10.C: Likewise.
* g++.dg/warn/Wparentheses-11.C: Likewise.
* g++.dg/warn/Wparentheses-12.C: Likewise.
* g++.dg/warn/Wparentheses-25.C: Likewise.
* g++.dg/warn/Wparentheses-6.C: Likewise.
* g++.dg/warn/Wparentheses-7.C: Likewise.
* g++.dg/warn/Wparentheses-8.C: Likewise.
* g++.dg/warn/Wparentheses-9.C: Likewise.
* g++.dg/warn/Wshadow-5.C: Likewise.
* g++.dg/warn/Wtype-limits-Wextra.C (ff): Likewise.
(gg): Likewise.
* g++.dg/warn/Wtype-limits-no.C (ff): Likewise.
(gg): Likewise.
* g++.dg/warn/Wtype-limits.C (ff): Likewise.
(gg): Likewise.
* g++.dg/warn/Wunused-local-typedefs.C: Likewise.
* g++.dg/warn/Wzero-as-null-pointer-constant-5.C: Likewise.
* g++.dg/warn/pmf1.C (a::f): Likewise.
* g++.old-deja/g++.benjamin/p13417.C: Likewise.
* g++.old-deja/g++.brendan/crash24.C (main): Likewise.
* g++.old-deja/g++.ext/constructor.C: Likewise.
* g++.old-deja/g++.ext/namedret1.C (f): Likewise.
* g++.old-deja/g++.ext/namedret3.C: Likewise.
* g++.old-deja/g++.ext/return1.C: Likewise.
* g++.old-deja/g++.jason/anon4.C (main): Likewise.
* g++.old-deja/g++.jason/enum6.C: Likewise.
* g++.old-deja/g++.jason/lineno2.C (main): Likewise.
* g++.old-deja/g++.jason/lineno3.C: Likewise.
* g++.old-deja/g++.jason/lineno4.C: Likewise.
* g++.old-deja/g++.jason/new2.C (main): Likewise.
* g++.old-deja/g++.jason/new4.C (main): Likewise.
* g++.old-deja/g++.jason/shadow1.C (main): Likewise.
* g++.old-deja/g++.jason/tempcons.C (struct A): Likewise.
* g++.old-deja/g++.jason/thunk2.C (main): Likewise.
* g++.old-deja/g++.law/builtin1.C (main): Likewise.
* g++.old-deja/g++.law/enum9.C: Likewise.
* g++.old-deja/g++.law/except3.C: Likewise.
* g++.old-deja/g++.law/init6.C: Likewise.
* g++.old-deja/g++.law/profile1.C (main): Likewise.
* g++.old-deja/g++.law/shadow2.C (main): Likewise.
* g++.old-deja/g++.law/temps4.C (main): Likewise.
* g++.old-deja/g++.mike/bool2.C (main): Likewise.
* g++.old-deja/g++.mike/eh1.C: Likewise.
* g++.old-deja/g++.mike/eh10.C: Likewise.
* g++.old-deja/g++.mike/eh13.C (main): Likewise.
* g++.old-deja/g++.mike/eh16.C: Likewise.
* g++.old-deja/g++.mike/eh17.C: Likewise.
* g++.old-deja/g++.mike/eh2.C: Likewise.
* g++.old-deja/g++.mike/eh23.C: Likewise.
* g++.old-deja/g++.mike/eh24.C: Likewise.
* g++.old-deja/g++.mike/eh25.C: Likewise.
* g++.old-deja/g++.mike/eh26.C: Likewise.
* g++.old-deja/g++.mike/eh27.C: Likewise.
* g++.old-deja/g++.mike/eh28.C: Likewise.
* g++.old-deja/g++.mike/eh29.C: Likewise.
* g++.old-deja/g++.mike/eh30.C: Likewise.
* g++.old-deja/g++.mike/eh31.C: Likewise.
* g++.old-deja/g++.mike/eh35.C: Likewise.
* g++.old-deja/g++.mike/eh36.C: Likewise.
* g++.old-deja/g++.mike/eh37.C: Likewise.
* g++.old-deja/g++.mike/eh38.C: Likewise.
* g++.old-deja/g++.mike/eh39.C: Likewise.
* g++.old-deja/g++.mike/eh40.C: Likewise.
* g++.old-deja/g++.mike/eh47.C: Likewise.
* g++.old-deja/g++.mike/eh50.C: Likewise.
* g++.old-deja/g++.mike/eh51.C: Likewise.
* g++.old-deja/g++.mike/eh7.C: Likewise.
* g++.old-deja/g++.mike/eh8.C: Likewise.
* g++.old-deja/g++.mike/eh9.C: Likewise.
* g++.old-deja/g++.mike/mangle1.C: Likewise.
* g++.old-deja/g++.mike/p5958.C: Likewise.
* g++.old-deja/g++.mike/p6004.C: Likewise.
* g++.old-deja/g++.mike/p700.C: Likewise.
* g++.old-deja/g++.mike/p7912.C: Likewise.
* g++.old-deja/g++.mike/p811.C (main): Likewise.
* g++.old-deja/g++.mike/virt4.C (main): Likewise.
* g++.old-deja/g++.oliva/nameret1.C: Likewise.
* g++.old-deja/g++.oliva/nameret2.C: Likewise.
* g++.old-deja/g++.other/decl1.C (bar): Likewise.
* g++.old-deja/g++.other/expr1.C (struct T): Likewise.
(main): Likewise.
* g++.old-deja/g++.other/inline8.C (main): Likewise.
* g++.old-deja/g++.other/loop1.C: Likewise.
* g++.old-deja/g++.other/syntax1.C (main): Likewise.
* g++.old-deja/g++.pt/repo3.C (main): Likewise.
* g++.old-deja/g++.robertl/eb27.C (main): Likewise.
* g++.old-deja/g++.robertl/eb83.C (main): Likewise.
* gcc.dg/pr44545.c: Likewise.
* obj-c++.dg/comp-types-8.mm: Likewise.
* obj-c++.dg/demangle-3.mm: Likewise.
* obj-c++.dg/super-class-1.mm: Likewise.

From-SVN: r254440

6 years agors6000: Implement insn_cost for mfcr, mfcrf
Segher Boessenkool [Mon, 6 Nov 2017 09:04:23 +0000 (10:04 +0100)]
rs6000: Implement insn_cost for mfcr, mfcrf

This gives mfcrf a cost of three integer insns, just like we do for sync
and load-with-reservation already.

* config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
TYPE_MFCRF.

From-SVN: r254439