platform/upstream/gcc.git
6 years agolibgo: add platform support for SuperH
Ian Lance Taylor [Wed, 10 Jan 2018 19:19:02 +0000 (19:19 +0000)]
libgo: add platform support for SuperH

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

From-SVN: r256446

6 years agomemcmp-1.c: Reduce runtime to something reasonable.
Aaron Sawdey [Wed, 10 Jan 2018 18:30:41 +0000 (18:30 +0000)]
memcmp-1.c: Reduce runtime to something reasonable.

2018-01-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

* gcc.dg/memcmp-1.c: Reduce runtime to something reasonable.

From-SVN: r256443

6 years agoAdd missing .a files.
Ian Lance Taylor [Wed, 10 Jan 2018 18:02:33 +0000 (18:02 +0000)]
Add missing .a files.

Add missing .a files.  These should have been committed with the
update to go1.10beta1, but were skipped because by default Subversion
ignores all files matching *.a.

From-SVN: r256442

6 years agore PR c++/82541 (Wduplicated-branches triggers in template context)
Marek Polacek [Wed, 10 Jan 2018 17:05:14 +0000 (17:05 +0000)]
re PR c++/82541 (Wduplicated-branches triggers in template context)

PR c++/82541
* call.c (build_conditional_expr_1): Check complain before warning.
* pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
-Wduplicated-branches.

* g++.dg/warn/Wduplicated-branches4.C: New test.

From-SVN: r256441

6 years agore PR c++/81327 (cast to void* does not suppress -Wclass-memaccess)
Jakub Jelinek [Wed, 10 Jan 2018 16:59:09 +0000 (17:59 +0100)]
re PR c++/81327 (cast to void* does not suppress -Wclass-memaccess)

PR c++/81327
* call.c (maybe_warn_class_memaccess): Add forward declaration.
Change last argument from tree * to const vec<tree, va_gc> *, adjust
args uses and check number of operands too.  Don't strip away any
nops.  Use maybe_constant_value when looking for INTEGER_CST args.
Deal with src argument not having pointer type.  Check
tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
test.
(build_over_call): Call maybe_warn_class_memaccess here on the
original arguments.
(build_cxx_call): Rather than here on converted arguments.

* g++.dg/Wclass-memaccess-2.C: Don't expect a warning when explicitly
cast to void *.

From-SVN: r256440

6 years ago2018-01-10 François Dumont <fdumont@gcc.gnu.org>
François Dumont [Wed, 10 Jan 2018 16:59:02 +0000 (16:59 +0000)]
2018-01-10  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/forward_list.h
(_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
(_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
(_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
(_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
(_Fwd_list_impl()): Add noexcept qualification.
(_Fwd_list_impl(const _Node_alloc_type&)): Delete.
(_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
(_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
(_Fwd_list_base()): Default.
(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
(_Fwd_list_base(_Fwd_list_base&&)): Default.
(forward_list<>()): Default.
(forward_list<>(forward_list&&)): Default.
(forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
(forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
(forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
* include/bits/forward_list.tcc
(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
_M_impl._M_head move assignment.
(forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
* testsuite/23_containers/forward_list/allocator/default_init.cc: New.

From-SVN: r256439

6 years agore PR c++/81055 (ICE with invalid initializer for array new)
Paolo Carlini [Wed, 10 Jan 2018 16:37:22 +0000 (16:37 +0000)]
re PR c++/81055 (ICE with invalid initializer for array new)

/cp
2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81055
* init.c (build_vec_init): Avoid building an INIT_EXPR with
error_mark_node as second argument.

/testsuite
2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81055
* g++.dg/cpp0x/new2.C: New.

From-SVN: r256438

6 years agore PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent)
Ian Lance Taylor [Wed, 10 Jan 2018 15:42:23 +0000 (15:42 +0000)]
re PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent)

PR c/82922

    runtime, syscall: use full prototypes in C code

    Based on patch by Martin Sebor.

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

From-SVN: r256437

6 years agoi386: Also adjust stack frame for stack slot alignment
H.J. Lu [Wed, 10 Jan 2018 15:37:49 +0000 (15:37 +0000)]
i386: Also adjust stack frame for stack slot alignment

We should also adjust stack_realign_offset for the largest alignment of
stack slot actually used when stack realignment isn't needed.  This is
required to keep stack frame properly aligned to satisfy the largest
alignment of stack slots.

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

gcc/

PR target/83735
* config/i386/i386.c (ix86_compute_frame_layout): Always adjust
stack_realign_offset for the largest alignment of stack slot
actually used.
(ix86_find_max_used_stack_alignment): New function.
(ix86_finalize_stack_frame_flags): Use it.  Set
max_used_stack_alignment if we don't realign stack.
* config/i386/i386.h (machine_function): Add
max_used_stack_alignment.

gcc/testsuite/

PR target/83735
* gcc.target/i386/pr83735.c: New test.

From-SVN: r256436

6 years agoexp: remove exp/proxy and exp/terminal packages
Ian Lance Taylor [Wed, 10 Jan 2018 15:37:45 +0000 (15:37 +0000)]
exp: remove exp/proxy and exp/terminal packages

    The exp/proxy package was removed from the master library in
    https://golang.org/cl/6461056 (August, 2012).

    The exp/terminal package was removed from the master library in
    https://golang.org/cl/5970044 (March, 2012).

    I'm not sure why they lingered in the gofrontend copy, but let's
    finally remove them now.

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

From-SVN: r256435

6 years ago[ARM] Add -mbranch-cost option, and update a few tests
Christophe Lyon [Wed, 10 Jan 2018 15:34:33 +0000 (15:34 +0000)]
[ARM] Add -mbranch-cost option, and update a few tests

2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/arm.opt (-mbranch-cost): New option.
* config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
account.

gcc/testsuite/
* lib/target-supports.exp (check_effective_target_branch_cost):
New function.
* gcc.dg/builtin-bswap-7.c: Use branch_cost effective target.
* gcc.dg/pr21643.c: Likewise.
* gcc.dg/pr46309.c: Likewise.
* gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
* gcc.dg/tree-ssa/phi-opt-2.c: Likewise.
* gcc.dg/tree-ssa/reassoc-32.c: Likewise.
* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
* gcc.dg/tree-ssa/reassoc-36.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-13.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise.
* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise.

From-SVN: r256434

6 years agocmd/go: check for another GCC error message
Ian Lance Taylor [Wed, 10 Jan 2018 15:18:55 +0000 (15:18 +0000)]
cmd/go: check for another GCC error message

    GCC always recognizes the -fsplit-stack option, but then tests whether
    it is supported by the selected target. If not, it reports
        cc1: error: ‘-fsplit-stack’ is not supported by this compiler configuration
    Check for that error message when deciding whether a compiler option works.

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

From-SVN: r256433

6 years agors6000: Wrap diff of immediates in const (PR83629)
Segher Boessenkool [Wed, 10 Jan 2018 15:13:07 +0000 (16:13 +0100)]
rs6000: Wrap diff of immediates in const (PR83629)

In various of our 32-bit load_toc patterns we take the difference of
two immediates (labels) as a term to something bigger; but this isn't
canonical RTL, it needs to be wrapped in CONST.

PR target/83629
* config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
load_toc_v4_PIC_3c): Wrap const term in CONST RTL.

testsuite/
PR target/83629
* gcc.target/powerpc/pr83629.c: New testcase.

From-SVN: r256432

6 years agoruntime: fix makemap calls in __go_construct_map
Ian Lance Taylor [Wed, 10 Jan 2018 15:04:21 +0000 (15:04 +0000)]
runtime: fix makemap calls in __go_construct_map

    The signature of makemap changed with the update to 1.10beta1,
    but I forgot to update the call from C code.

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

From-SVN: r256431

6 years agore PR c/78768 (-Walloca-larger-than and -Wformat-length warnings disabled by -flto)
Richard Biener [Wed, 10 Jan 2018 14:51:07 +0000 (14:51 +0000)]
re PR c/78768 (-Walloca-larger-than and -Wformat-length warnings disabled by -flto)

2018-01-10  Richard Biener  <rguenther@suse.de>

PR testsuite/78768
* gcc.dg/pr78768.c: Un-XFAIL.

From-SVN: r256430

6 years agore PR debug/82425 (gcc.dg/guality/inline-params-2.c fail)
Richard Biener [Wed, 10 Jan 2018 14:41:34 +0000 (14:41 +0000)]
re PR debug/82425 (gcc.dg/guality/inline-params-2.c fail)

2018-01-10  Richard Biener  <rguenther@suse.de>

PR debug/82425
* gcc.dg/guality/inline-params-2.c: Un-XFAIL for slim LTO.

From-SVN: r256429

6 years agore PR debug/83765 (LTO bootstrap with Ada fails)
Richard Biener [Wed, 10 Jan 2018 14:23:29 +0000 (14:23 +0000)]
re PR debug/83765 (LTO bootstrap with Ada fails)

2018-01-10  Richard Biener  <rguenther@suse.de>

PR debug/83765
* dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
early out so it also covers the case where we have a non-NULL
origin.

From-SVN: r256428

6 years agoDon't use permutes for single-element accesses (PR83753)
Richard Sandiford [Wed, 10 Jan 2018 13:07:54 +0000 (13:07 +0000)]
Don't use permutes for single-element accesses (PR83753)

After cunrolling the inner loop, the remaining loop in the testcase
has a single 32-bit access and a group of 64-bit accesses.  We first
try to vectorise at 128 bits (VF 4), but decide not to for cost reasons.
We then try with 64 bits (VF 2) instead.  This means that the group
of 64-bit accesses uses a single-element vector, which is deliberately
supported as of r251538.  We then try to create "permutes" for these
single-element vectors and fall foul of:

      for (i = 0; i < 6; i++)
sel[i] += exact_div (nelt, 2);

in vect_grouped_store_supported, since nelt==1.

Maybe we shouldn't even be trying to vectorise statements in the
single-element case, and instead just copy the scalar statement
for each member of the group.  But until then, this patch treats
non-strided grouped accesses as VMAT_CONTIGUOUS if no permutation
is necessary.

2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83753
* tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
for non-strided grouped accesses if the number of elements is 1.

gcc/testsuite/
PR tree-optimization/83753
* gcc.dg/torture/pr83753.c: New test.

From-SVN: r256427

6 years agoPR 83740 Wrong string length type in bounds check
Janne Blomqvist [Wed, 10 Jan 2018 11:34:45 +0000 (13:34 +0200)]
PR 83740 Wrong string length type in bounds check

This patch fixes up the formatting and corrects the PR number in the
ChangeLog for r256425.

gcc/fortran/ChangeLog:

2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/83740
* trans-array.c (gfc_trans_array_ctor_element): Fix formatting.

From-SVN: r256426

6 years agoPR 84740 Wrong string length type in bounds check
Janne Blomqvist [Wed, 10 Jan 2018 11:18:31 +0000 (13:18 +0200)]
PR 84740 Wrong string length type in bounds check

Need to convert the RHS to the type of the LHS when assigning.

Regtested on x86_64-pc-linux-gnu, committed as obvious.

gcc/fortran/ChangeLog:

2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/84740
* trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the
LHS type when assigning.

From-SVN: r256425

6 years agore PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
Jan Hubicka [Wed, 10 Jan 2018 11:02:55 +0000 (12:02 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)

PR target/81616
* i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
* i386.h (TARGET_USE_GATHER): Define.
* x86-tune.def (X86_TUNE_USE_GATHER): New.

From-SVN: r256424

6 years agoavx2-gather-1.c: Add -march.
Jan Hubicka [Wed, 10 Jan 2018 11:01:25 +0000 (12:01 +0100)]
avx2-gather-1.c: Add -march.

* gcc.target/i386/avx2-gather-1.c: Add -march.
* gcc.target/i386/avx2-gather-2.c: Add -march.
* gcc.target/i386/avx2-gather-3.c: Add -march.
* gcc.target/i386/avx2-gather-4.c: Add -march.
* gcc.target/i386/avx2-gather-5.c: Add -march.
* gcc.target/i386/avx2-gather-6.c: Add -march.
* gcc.target/i386/avx512f-gather-1.c: Add -march.
* gcc.target/i386/avx512f-gather-2.c: Add -march.
* gcc.target/i386/avx512f-gather-3.c: Add -march.
* gcc.target/i386/avx512f-gather-4.c: Add -march.
* gcc.target/i386/avx512f-gather-5.c: Add -march.
* gcc.target/i386/avx512f-i32gatherd512-1.c: Add -march.
* gcc.target/i386/avx512f-i32gatherd512-2.c: Add -march.
* gcc.target/i386/avx512f-i32gatherpd512-1.c: Add -march.
* gcc.target/i386/avx512f-i32gatherpd512-2.c: Add -march.
* gcc.target/i386/avx512f-i32gatherps512-1.c: Add -march.

From-SVN: r256423

6 years agoClean up partitioning in try_optimize_cfg (PR bootstrap/82831).
Martin Liska [Wed, 10 Jan 2018 10:54:20 +0000 (11:54 +0100)]
Clean up partitioning in try_optimize_cfg (PR bootstrap/82831).

2018-01-10  Martin Liska  <mliska@suse.cz>

PR bootstrap/82831
* basic-block.h (CLEANUP_NO_PARTITIONING): New define.
* bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
partitioning.
* cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
CLEANUP_NO_PARTITIONING is not set.

From-SVN: r256422

6 years agoMostly revert r254296
Richard Sandiford [Wed, 10 Jan 2018 08:46:07 +0000 (08:46 +0000)]
Mostly revert r254296

r254296 added support for (const ...) wrappers around vectors,
but in the end the agreement was to use a variable-length
encoding of CONST_VECTOR (and VECTOR_CST) instead.  This patch
therefore reverts the bits that are no longer needed.

The rtl.texi part isn't a full revert, since r254296 also updated the
documentation to mention unspecs in address calculations, and to relax
the requirement that the mode had to be Pmode.

2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* doc/rtl.texi: Remove documentation of (const ...) wrappers
for vectors, as a partial revert of r254296.
* rtl.h (const_vec_p): Delete.
(const_vec_duplicate_p): Don't test for vector CONSTs.
(unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
* expmed.c (make_tree): Likewise.

Revert:
* common.md (E, F): Use CONSTANT_P instead of checking for
CONST_VECTOR.
* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
checking for CONST_VECTOR.

From-SVN: r256421

6 years agore PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple hot/cold...
Jan Hubicka [Wed, 10 Jan 2018 08:19:52 +0000 (09:19 +0100)]
re PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple hot/cold transitions found))

PR middle-end/83575
* predict.c (force_edge_cold): Handle in more sane way edges
with no prediction.

From-SVN: r256420

6 years agoruntime: work around escaping closure in export_test.go
Ian Lance Taylor [Wed, 10 Jan 2018 05:26:29 +0000 (05:26 +0000)]
runtime: work around escaping closure in export_test.go

    When compiling runtime, it is not allowed for local variables
    and closures to be heap allocated. In one test, there is a go
    statement with a closure. In the gc compiler, it distinguishes
    capturing variable by value vs. by address, and rewrites it to
    passing the captured values as arguments. Currently we don't
    have this, and the escape analysis decides to heap allocate the
    closure and also the captured variables, which is not allowed.
    Work around it by passing the variables explicitly.

    This is in preparation of turning on escape analysis for the
    runtime.

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

From-SVN: r256419

6 years agoruntime: noescape some functions/variables
Ian Lance Taylor [Wed, 10 Jan 2018 05:15:52 +0000 (05:15 +0000)]
runtime: noescape some functions/variables

    This is in preparation of turning on escape analysis for the
    runtime.

    - In gccgo, systemstack is implemented with mcall, which is not
      go:noescape. Wrap the closure in noescape so the escape analysis
      does not think it escapes.

    - Mark some C functions go:noescape. They do not leak arguments.

    - Use noescape function to make a few local variables' addresses
      not escape. The escape analysis cannot figure out because they
      are assigned to pointer indirections.

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

From-SVN: r256418

6 years agocmd/go: add AIX support
Ian Lance Taylor [Wed, 10 Jan 2018 05:12:39 +0000 (05:12 +0000)]
cmd/go: add AIX support

    For gccgo code avoid --whole-archive and -(.  Use -blibpath instead of
    -rpath.

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

From-SVN: r256417

6 years agolibgo: add aix build tags
Ian Lance Taylor [Wed, 10 Jan 2018 04:53:55 +0000 (04:53 +0000)]
libgo: add aix build tags

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

From-SVN: r256416

6 years agoDaily bump.
GCC Administrator [Wed, 10 Jan 2018 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256415

6 years agocompiler: use temporary variable for stack allocation
Ian Lance Taylor [Tue, 9 Jan 2018 23:56:54 +0000 (23:56 +0000)]
compiler: use temporary variable for stack allocation

    Currently, allocation expression that can be allocated on stack
    is implemented with __builtin_alloca, which turns into
    __morestack_allocate_stack_space, which may call C malloc. This
    may be slow. Also if this happens during certain runtime
    functions (e.g. write barrier), bad things might happen (when
    the escape analysis is enabled for the runtime). Make a temporary
    variable on stack for the allocation instead.

    Also remove the write barrier in the assignment in building heap
    expression when it is stack allocated.

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

From-SVN: r256412

6 years agocompiler: set captured variable address to nonescape until further flooded
Ian Lance Taylor [Tue, 9 Jan 2018 23:43:23 +0000 (23:43 +0000)]
compiler: set captured variable address to nonescape until further flooded

    The escape analysis models closures by flowing captured variable
    address to the closure node. However, the escape state for the
    address expressions remained unset as ESCAPE_UNKNOWN. This
    caused later passes to conclude that the address escapes. Fix this by
    setting its escape state to ESCAPE_NONE first. If it escapes
    (because the closure escapes), the flood phase will set its
    escape state properly.

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

From-SVN: r256411

6 years agocompiler: stack allocate defer thunk
Ian Lance Taylor [Tue, 9 Jan 2018 23:36:46 +0000 (23:36 +0000)]
compiler: stack allocate defer thunk

    Defer statement may need to allocate a thunk. When it is not
    inside a loop, this can be stack allocated, as it runs before
    the function finishes.

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

From-SVN: r256410

6 years ago* es.po: Update.
Joseph Myers [Tue, 9 Jan 2018 23:36:06 +0000 (23:36 +0000)]
* es.po: Update.

From-SVN: r256408

6 years agocompiler: make non-escaping Bound_method_expression not heap allocate
Ian Lance Taylor [Tue, 9 Jan 2018 23:33:49 +0000 (23:33 +0000)]
compiler: make non-escaping Bound_method_expression not heap allocate

    Bound_method_expression needs a closure. Stack allocate the
    closure when it does not escape.

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

From-SVN: r256407

6 years agocompiler: move some escape check to Mark_address_taken
Ian Lance Taylor [Tue, 9 Jan 2018 23:30:37 +0000 (23:30 +0000)]
compiler: move some escape check to Mark_address_taken

    Move some check of escape state earlier, from get_backend to
    Mark_address_taken. So we can reclaim escape analysis Nodes
    before kicking off the backend (not done in this CL). Also it
    makes it easier to check variables and closures do not escape
    when the escape analysis is run for the runtime package (also
    not done in this CL).

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

From-SVN: r256406

6 years agocompiler: support go:noescape cross package
Ian Lance Taylor [Tue, 9 Jan 2018 23:26:27 +0000 (23:26 +0000)]
compiler: support go:noescape cross package

    CL 83876 added support of go:noescape pragma, but it only works
    for functions called from the same package. The pragma did not
    take effect for exported functions that are not called from
    the same package. The reason is that top level function
    declarations are not traversed, and only reached from calls
    from other functions. This CL adds this support. The Traverse
    class is extended with a mode to traverse function declarations.

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

From-SVN: r256405

6 years agocompiler: stack allocate non-escaping makeslice
Ian Lance Taylor [Tue, 9 Jan 2018 23:21:38 +0000 (23:21 +0000)]
compiler: stack allocate non-escaping makeslice

    If we're making a slice of constant size that does not need to
    escape, allocate it on stack.

    In lower, do not create temporaries for constant size makeslice,
    so that it is easier to detect the slice is constant size later.

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

From-SVN: r256404

6 years agocompiler: delay escaping sliced arrays
Ian Lance Taylor [Tue, 9 Jan 2018 23:16:13 +0000 (23:16 +0000)]
compiler: delay escaping sliced arrays

    Arrays that are sliced are set to escape in type checking, very
    early in compilation. The escape analysis runs later but cannot
    undo it. This CL changes it to not escape in the early stage.
    Later the escape analysis will make it escape when needed.

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

From-SVN: r256403

6 years agoi386: Add a test for PR target/78585
H.J. Lu [Tue, 9 Jan 2018 23:15:40 +0000 (23:15 +0000)]
i386: Add a test for PR target/78585

PR target/78585 has been fixed for GCC 7 by

commit 7ed04d053eead43d87dff40fb4e2904219afc4d5
Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Wed Nov 30 13:02:07 2016 +0000

* config/i386/i386.c (dimode_scalar_chain::convert_op): Avoid
sharing the SUBREG rtx between move and following insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243018 138bc75d-0d04-0410-961f-82ee72b054a4

PR target/78585:
* gcc.target/i386/pr78585.c: New test.

From-SVN: r256402

6 years agoPR libstdc++/80276 fix pretty printers for array smart pointers
Jonathan Wakely [Tue, 9 Jan 2018 21:46:13 +0000 (21:46 +0000)]
PR libstdc++/80276 fix pretty printers for array smart pointers

PR libstdc++/80276
* python/libstdcxx/v6/printers.py (SharedPointerPrinter)
(UniquePointerPrinter): Print correct template argument, not type of
the pointer.
(TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
a type.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
array type.
* testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
weak_ptr of array types.

From-SVN: r256400

6 years agoos/signal/internal/pty: build on Solaris
Ian Lance Taylor [Tue, 9 Jan 2018 21:42:59 +0000 (21:42 +0000)]
os/signal/internal/pty: build on Solaris

    Patch from Rainer Orth.

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

From-SVN: r256399

6 years agocompiler: make top-level decl for address-taken non-escaping locals
Cherry Zhang [Tue, 9 Jan 2018 21:33:59 +0000 (21:33 +0000)]
compiler: make top-level decl for address-taken non-escaping locals

    If a local variable's address is taken and passed out of its
    lexical scope, GCC backend may reuse the stack slot for the
    variable, not knowing it is still live through a pointer. In
    this case, we create a top-level temporary variable and let the
    user-defined variable refer to the temporary variable as its
    storage location. As the temporary variable is declared at the
    top level, its stack slot will remain live throughout the
    function.

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

* go-gcc.cc (local_variable): Add decl_var parameter.

From-SVN: r256398

6 years agore PR c++/83734 (ice in cxx_eval _statement_list, at cp/constexpr.c:3869)
Jakub Jelinek [Tue, 9 Jan 2018 21:21:03 +0000 (22:21 +0100)]
re PR c++/83734 (ice in cxx_eval _statement_list, at cp/constexpr.c:3869)

PR c++/83734
* constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
in STATEMENT_LIST.  Remove unneeded assert.

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

From-SVN: r256397

6 years agore PR libstdc++/83709 (Inserting duplicates into an unordered associative containers...
François Dumont [Tue, 9 Jan 2018 21:05:10 +0000 (21:05 +0000)]
re PR libstdc++/83709 (Inserting duplicates into an unordered associative containers causes the container to invalidate iterators)

2018-01-09  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/83709
* include/bits/hashtable_policy.h
(__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
__first != __last.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
Add false_type parameter.
(_Insert_base::insert): Adapt.
* include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
Adapt.
(_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
 Add __n_elt parameter, defaulted to 1.
(_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
policy _M_need_rehash.
(_Hashtable::_M_merge_unique): Pass target number of elements to add to
produce only 1 rehash if necessary.
* testsuite/23_containers/unordered_map/insert/83709.cc: New.
* testsuite/23_containers/unordered_set/insert/83709.cc: New.

From-SVN: r256396

6 years agoaltivec.md (p8_vmrgow): Add support for V2DI, V2DF, V4SI, V4SF types.
Carl Love [Tue, 9 Jan 2018 20:58:04 +0000 (20:58 +0000)]
altivec.md (p8_vmrgow): Add support for V2DI, V2DF, V4SI, V4SF types.

gcc/ChangeLog:

2018-01-09  Carl Love  <cel@us.ibm.com>

* config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
V4SI, V4SF types.
(p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
* config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
* config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
* config/rs6000/rs6000-protos.h: Add extern defition for
rs6000_generate_float2_double_code.
* config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
function.
* config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
(float2_v2df): Add define_expand.

gcc/testsuite/ChangeLog:

2017-01-09 Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-1.c (main): Add tests for vec_mergee and
vec_mergeo builtins with float, double, long long, unsigned long long,
bool long long  arguments.
* gcc.target/powerpc/builtins-3-runnable.c (main): Add test for
vec_float2 with double arguments.
* gcc.target/powerpc/builtins-mergew-mergow.c: New runable test for the
vec_mergew and vec_mergow builtins.

From-SVN: r256395

6 years agocompiler: add escape analysis debug hash
Cherry Zhang [Tue, 9 Jan 2018 20:42:08 +0000 (20:42 +0000)]
compiler: add escape analysis debug hash

    Add a flag -fgo-debug-escape-hash for debugging escape analysis.
    It takes a binary string, optionally led by a "-", as argument.
    When specified, the escape analysis runs only on functions whose
    name is hashed to a value with matching suffix. The "-" sign
    negates the match, i.e. the analysis runs only on functions with
    non-matching hash.

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

* lang.opt (fgo-debug-escape-hash): New option.
* go-c.h (struct go_create_gogo_args): Add debug_escape_hash
field.
* go-lang.c (go_langhook_init): Set debug_escape_hash field.
* gccgo.texi (Invoking gccgo): Document -fgo-debug-escape-hash.

From-SVN: r256393

6 years agoPart of the fix for pr82190 got undone by my newer memcmp checkin.
Aaron Sawdey [Tue, 9 Jan 2018 20:08:43 +0000 (14:08 -0600)]
Part of the fix for pr82190 got undone by my newer memcmp checkin.

From-SVN: r256392

6 years agore PR fortran/83742 (ICE in gfc_is_simply_contiguous, at fortran/expr.c:5323)
Steven G. Kargl [Tue, 9 Jan 2018 19:49:25 +0000 (19:49 +0000)]
re PR fortran/83742 (ICE in gfc_is_simply_contiguous, at fortran/expr.c:5323)

2018-01-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83742
* expr.c (gfc_is_simply_contiguous): Check for NULL pointer.

2018-01-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83742
* gfortran.dg/contiguous_6.f90: New test.

From-SVN: r256391

6 years agoPR libstdc++/59253 Improve pretty printers for smart pointers
Juraj Oršulić [Tue, 9 Jan 2018 18:49:57 +0000 (18:49 +0000)]
PR libstdc++/59253 Improve pretty printers for smart pointers

PR libstdc++/59253 (partial)
* python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
(SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
children.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
of unique_ptr printer.
* testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
output of shared_ptr printer.

From-SVN: r256390

6 years agocompiler: use macro Unordered_map instead of std::unordered_map
Ian Lance Taylor [Tue, 9 Jan 2018 17:21:01 +0000 (17:21 +0000)]
compiler: use macro Unordered_map instead of std::unordered_map

    Per gcc/go/go-system.h, this is what it is supposed to be, to
    support wider platforms.

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

From-SVN: r256389

6 years agoForgot to commit changelog entry:
Aaron Sawdey [Tue, 9 Jan 2018 16:47:57 +0000 (10:47 -0600)]
Forgot to commit changelog entry:

2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
function.
(do_ifelse): New function.
(do_isel): New function.
(do_sub3): New function.
(do_add3): New function.
(do_load_mask_compare): New function.
(do_overlap_load_compare): New function.
(expand_compare_loop): New function.
(expand_block_compare): Call expand_compare_loop() when appropriate.
* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
option description.
(-mblock-compare-inline-loop-limit): New option.

From-SVN: r256388

6 years agore PR rtl-optimization/83628 (performance regression when accessing arrays on alpha)
Uros Bizjak [Tue, 9 Jan 2018 16:27:11 +0000 (17:27 +0100)]
re PR rtl-optimization/83628 (performance regression when accessing arrays on alpha)

PR target/83628
* combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
op_mode in the force_to_mode call.

From-SVN: r256387

6 years ago[AArch64] Use vec_perm_indices helper routines
Richard Sandiford [Tue, 9 Jan 2018 14:31:55 +0000 (14:31 +0000)]
[AArch64] Use vec_perm_indices helper routines

This patch makes the AArch64 vec_perm_const code use the new
vec_perm_indices routines, instead of checking each element individually.
This means that they extend naturally to variable-length vectors.

Also, aarch64_evpc_dup was the only function that generated rtl when
testing_p is true, and that looked accidental.  The patch adds the
missing check and then replaces the gen_rtx_REG/start_sequence/
end_sequence stuff with an assert that no rtl is generated.

2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
instead of checking each element individually.
(aarch64_evpc_uzp): Likewise.
(aarch64_evpc_zip): Likewise.
(aarch64_evpc_ext): Likewise.
(aarch64_evpc_rev): Likewise.
(aarch64_evpc_dup): Test the encoding for a single duplicated element,
instead of checking each element individually.  Return true without
generating rtl if
(aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
whether all selected elements come from the same input, instead of
checking each element individually.  Remove calls to gen_rtx_REG,
start_sequence and end_sequence and instead assert that no rtl is
generated.

From-SVN: r256385

6 years ago[AArch64] Reject (high (const (plus anchor offset)))
Richard Sandiford [Tue, 9 Jan 2018 14:31:25 +0000 (14:31 +0000)]
[AArch64] Reject (high (const (plus anchor offset)))

The aarch64_legitimate_constant_p tests for HIGH and CONST seem
to be the wrong way round: (high (const ...)) is valid rtl that
could be passed in, but (const (high ...)) isn't.  As it stands,
we disallow anchor+offset but allow (high anchor+offset).

2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
order of HIGH and CONST checks.

From-SVN: r256384

6 years agoFix permute handling when vectorising scatters
Richard Sandiford [Tue, 9 Jan 2018 14:30:27 +0000 (14:30 +0000)]
Fix permute handling when vectorising scatters

As mentioned in https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01575.html ,
the scatter handling in vectorizable_store seems to be dead code at the
moment.  Enabling it with the vect_analyze_data_ref_access part of
that patch triggered an ICE in the avx512f-scatter-*.c tests (which
previously didn't use scatters).  The problem was that the NARROW
and WIDEN handling uses permute_vec_elements to marshal the inputs,
and permute_vec_elements expected the lhs of the stmt to be an SSA_NAME,
which of course it isn't for stores.

This patch makes permute_vec_elements create a fresh variable in this case.

2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
if the destination isn't an SSA_NAME.

From-SVN: r256383

6 years agore PR tree-optimization/83668 (wrong code with -O -fno-tree-dominator-opts -fgraphite...
Richard Biener [Tue, 9 Jan 2018 13:35:43 +0000 (13:35 +0000)]
re PR tree-optimization/83668 (wrong code with -O -fno-tree-dominator-opts -fgraphite-identity)

2018-01-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83668
* graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
move prologue...
(canonicalize_loop_form): ... here, renamed from ...
(canonicalize_loop_closed_ssa_form): ... this and amended to
swap successor edges for loop exit blocks to make us use
the RPO order we need for initial schedule generation.

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

From-SVN: r256381

6 years agoFix folding of Inf/NaN comparisons for -ftrapping-math (PR tree-optimization/64811).
Joseph Myers [Tue, 9 Jan 2018 13:25:38 +0000 (13:25 +0000)]
Fix folding of Inf/NaN comparisons for -ftrapping-math (PR tree-optimization/64811).

The folding of comparisons against Inf (to constants or comparisons
with the maximum finite value) has various cases where it introduces
or loses "invalid" exceptions for comparisons with NaNs.

Folding x > +Inf to 0 should not be about HONOR_SNANS - ordered
comparisons of both quiet and signaling NaNs should raise invalid.

x <= +Inf is not the same as x == x, because again that loses an
exception (equality comparisons don't raise exceptions except for
signaling NaNs).

x == +Inf is not the same as x > DBL_MAX, and a similar issue applies
with the x != +Inf case - that transformation causes a spurious
exception.

This patch fixes the conditionals on the folding to avoid such
introducing or losing exceptions.

Bootstrapped with no regressions on x86_64-pc-linux-gnu (where the
cases involving spurious exceptions wouldn't have failed anyway before
GCC 8 because of unordered comparisons wrongly always having formerly
been used by the back end).  Also tested for powerpc-linux-gnu
soft-float that this fixes many glibc math/ test failures that arose
in that configuration because this folding affected the IBM long
double support in libgcc (no such failures appeared for hard-float
because of the bug of powerpc hard-float always using unordered
comparisons) - some failures remain, but I believe them to be
unrelated.

PR tree-optimization/64811
gcc:
* match.pd: When optimizing comparisons with Inf, avoid
introducing or losing exceptions from comparisons with NaN.

gcc/testsuite:
* gcc.dg/torture/inf-compare-1.c, gcc.dg/torture/inf-compare-2.c,
gcc.dg/torture/inf-compare-3.c, gcc.dg/torture/inf-compare-4.c,
gcc.dg/torture/inf-compare-5.c, gcc.dg/torture/inf-compare-6.c,
gcc.dg/torture/inf-compare-7.c, gcc.dg/torture/inf-compare-8.c:
New tests.
* gcc.c-torture/execute/ieee/fp-cmp-7.x: New file.

From-SVN: r256380

6 years agoAdd gcc_assert about stack alignment (PR sanitizer/82517).
Martin Liska [Tue, 9 Jan 2018 11:47:26 +0000 (12:47 +0100)]
Add gcc_assert about stack alignment (PR sanitizer/82517).

2018-01-09  Martin Liska  <mliska@suse.cz>

PR sanitizer/82517
* asan.c (shadow_mem_size): Add gcc_assert.

From-SVN: r256378

6 years agore PR target/79883 (avr i18n: untranslated "interrupt" or "signal")
Georg-Johann Lay [Tue, 9 Jan 2018 11:27:34 +0000 (11:27 +0000)]
re PR target/79883 (avr i18n: untranslated "interrupt" or "signal")

PR target/79883
* gcc.target/avr/torture/pr57631.c (dg-warning): Quote 'signal'.

From-SVN: r256376

6 years agore PR target/82641 (Unable to enable crc32 for a certain function with target attribu...
Tamar Christina [Tue, 9 Jan 2018 11:04:50 +0000 (11:04 +0000)]
re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))

2018-01-09  Tamar Christina  <tamar.christina@arm.com>

        PR target/82641
        * gcc.target/arm/pragma_fpu_attribute.c: Rewrite to use
        no NEON and require softfp or hard float-abi.
        * gcc.target/arm/pragma_fpu_attribute_2.c: Likewise.

From-SVN: r256375

6 years agotypo
Georg-Johann Lay [Tue, 9 Jan 2018 10:40:06 +0000 (10:40 +0000)]
typo

From-SVN: r256374

6 years agoDon't save registers in main().
Georg-Johann Lay [Tue, 9 Jan 2018 10:38:45 +0000 (10:38 +0000)]
Don't save registers in main().

gcc/
Don't save registers in main().
PR target/83737
* doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
* config/avr/avr.opt (-mmain-is-OS_task): New target option.
* config/avr/avr.c (avr_set_current_function): Don't error if
naked, OS_task or OS_main are specified at the same time.
(avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
OS_main.
(avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
attribute.
* common/config/avr/avr-common.c (avr_option_optimization_table):
Switch on -mmain-is-OS_task for optimizing compilations.

From-SVN: r256373

6 years agore PR tree-optimization/83572 ([graphite] ICE in verify_dominators, at dominance...
Richard Biener [Tue, 9 Jan 2018 08:55:26 +0000 (08:55 +0000)]
re PR tree-optimization/83572 ([graphite] ICE in verify_dominators, at dominance.c:1184 (error: dominator of 7 should be 15, not 13))

2018-01-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83572
* graphite.c: Include cfganal.h.
(graphite_transform_loops): Connect infinite loops to exit
and remove fake edges at the end.

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

From-SVN: r256372

6 years ago* ipa-inline.c (edge_badness): Revert accidental checkin.
Jan Hubicka [Tue, 9 Jan 2018 08:37:12 +0000 (09:37 +0100)]
* ipa-inline.c (edge_badness): Revert accidental checkin.

From-SVN: r256370

6 years agore PR c++/80763 (-O3 causes error: inline clone in same comdat group list)
Jan Hubicka [Tue, 9 Jan 2018 08:22:28 +0000 (09:22 +0100)]
re PR c++/80763 (-O3 causes error: inline clone in same comdat group list)

PR ipa/80763
* ipa-comdats.c (set_comdat_group): Only set comdat group of real
symbols; not inline clones.

From-SVN: r256369

6 years agore PR target/83507 (ICE in internal_dfa_insn_code_* for powerpc targets)
Jakub Jelinek [Tue, 9 Jan 2018 08:03:45 +0000 (09:03 +0100)]
re PR target/83507 (ICE in internal_dfa_insn_code_* for powerpc targets)

PR target/83507
* modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
hard registers.  Formatting fixes.

* gcc.dg/sms-13.c: New test.

From-SVN: r256368

6 years agore PR preprocessor/83722 (the ICE dumper doesn't comment-out some error messages)
Jakub Jelinek [Tue, 9 Jan 2018 08:02:01 +0000 (09:02 +0100)]
re PR preprocessor/83722 (the ICE dumper doesn't comment-out some error messages)

PR preprocessor/83722
* gcc.c (try_generate_repro): Pass
&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
&temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
do_report_bug.

From-SVN: r256367

6 years agore PR fortran/83741 (ICE in gfc_match_allocate, at fortran/match.c:4074)
Steven G. Kargl [Tue, 9 Jan 2018 01:26:17 +0000 (01:26 +0000)]
re PR fortran/83741 (ICE in gfc_match_allocate, at fortran/match.c:4074)

2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

PR Fortran/83741
* gfortran.dg/allocate_assumed_charlen_3.f90: New test.

From-SVN: r256366

6 years agolibgo: update to Go1.10beta1
Ian Lance Taylor [Tue, 9 Jan 2018 01:23:08 +0000 (01:23 +0000)]
libgo: update to Go1.10beta1

    Update the Go library to the 1.10beta1 release.

    Requires a few changes to the compiler for modifications to the map
    runtime code, and to handle some nowritebarrier cases in the runtime.

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

gotools/:
* Makefile.am (go_cmd_vet_files): New variable.
(go_cmd_buildid_files, go_cmd_test2json_files): New variables.
(s-zdefaultcc): Change from constants to functions.
(noinst_PROGRAMS): Add vet, buildid, and test2json.
(cgo$(EXEEXT)): Link against $(LIBGOTOOL).
(vet$(EXEEXT)): New target.
(buildid$(EXEEXT)): New target.
(test2json$(EXEEXT)): New target.
(install-exec-local): Install all $(noinst_PROGRAMS).
(uninstall-local): Uninstasll all $(noinst_PROGRAMS).
(check-go-tool): Depend on $(noinst_PROGRAMS).  Copy down
objabi.go.
(check-runtime): Depend on $(noinst_PROGRAMS).
(check-cgo-test, check-carchive-test): Likewise.
(check-vet): New target.
(check): Depend on check-vet.  Look at cmd_vet-testlog.
(.PHONY): Add check-vet.
* Makefile.in: Rebuild.

From-SVN: r256365

6 years agomatch.c (gfc_match_allocate): Check for NULL pointer.
Steven G. Kargl [Tue, 9 Jan 2018 01:17:50 +0000 (01:17 +0000)]
match.c (gfc_match_allocate): Check for NULL pointer.

2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

* match.c (gfc_match_allocate): Check for NULL pointer.

From-SVN: r256364

6 years agoRISC-V: Fix -msave-restore bug with sibcalls.
Jim Wilson [Tue, 9 Jan 2018 00:45:46 +0000 (16:45 -0800)]
RISC-V: Fix -msave-restore bug with sibcalls.

2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
    Kito Cheng  <kito.cheng@gmail.com>

gcc/
* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
(riscv_leaf_function_p): Delete.
(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.

2018-01-08  Chih-Mao Chen <pkmx.tw@gmail.com>
    Monk Chiang  <sh.chiang04@gmail.com>

gcc/testsuite/
* gcc.target/riscv/save-restore-1.c: New.

From-SVN: r256362

6 years agoDaily bump.
GCC Administrator [Tue, 9 Jan 2018 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256361

6 years agore PR target/83677 (PPC: The xxpermr instruction is not generated correctly)
Bill Schmidt [Mon, 8 Jan 2018 23:08:34 +0000 (23:08 +0000)]
re PR target/83677 (PPC: The xxpermr instruction is not generated correctly)

[gcc]

2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/83677
* config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
Reverse order of second and third operands in first alternative.
* config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
of first and second elements in UNSPEC_VPERMR vector.
(altivec_expand_vec_perm_le): Likewise.

[gcc/testsuite]

2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/83677
* gcc.target/powerpc/pr83677.c: New file.

From-SVN: r256358

6 years agoquad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use...
Michael Meissner [Mon, 8 Jan 2018 22:11:24 +0000 (22:11 +0000)]
quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double.

2018-01-08  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
__ibm128, instead of trying to use long double.
(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
accomidate -mabi=ieeelongdouble multilibs.
(CVT_IBM128_TO_FLOAT128): Likewise.
* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
the appropriate IBM extended double type.
(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
(__gcc_qsub): Likewise.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(pack_ldouble): Likewise.
(__gcc_qneg): Likewise.
(__gcc_qeq): Likewise.
(__gcc_qne): Likewise.
(__gcc_qge): Likewise.
(__gcc_qle): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.
(__gcc_itoq): Likewise.
(__gcc_utoq): Likewise.
(__gcc_qunord): Likewise.
* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(FABS): Likewise.
(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.

From-SVN: r256354

6 years agoquad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use...
Michael Meissner [Mon, 8 Jan 2018 21:49:37 +0000 (21:49 +0000)]
quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double.

2018-01-08  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
__ibm128, instead of trying to use long double.
(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
accomidate -mabi=ieeelongdouble multilibs.
(CVT_IBM128_TO_FLOAT128): Likewise.
* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
the appropriate IBM extended double type.
(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
(__gcc_qsub): Likewise.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(pack_ldouble): Likewise.
(__gcc_qneg): Likewise.
(__gcc_qeq): Likewise.
(__gcc_qne): Likewise.
(__gcc_qge): Likewise.
(__gcc_qle): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.
(__gcc_itoq): Likewise.
(__gcc_utoq): Likewise.
(__gcc_qunord): Likewise.
* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(FABS): Likewise.
(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.

From-SVN: r256353

6 years agoexpr.c (gfc_check_pointer_assign): Fix typo in comment.
Steven G. Kargl [Mon, 8 Jan 2018 20:48:26 +0000 (20:48 +0000)]
expr.c (gfc_check_pointer_assign): Fix typo in comment.

2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

* expr.c (gfc_check_pointer_assign): Fix typo in comment.

From-SVN: r256352

6 years agors6000-string.c (do_load_for_compare_from_addr): New function.
Aaron Sawdey [Mon, 8 Jan 2018 19:37:33 +0000 (13:37 -0600)]
rs6000-string.c (do_load_for_compare_from_addr): New function.

2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
function.
(do_ifelse): New function.
(do_isel): New function.
(do_sub3): New function.
(do_add3): New function.
(do_load_mask_compare): New function.
(do_overlap_load_compare): New function.
(expand_compare_loop): New function.
(expand_block_compare): Call expand_compare_loop() when appropriate.
* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
option description.
(-mblock-compare-inline-loop-limit): New option.

From-SVN: r256351

6 years agore PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)
Jeff Law [Mon, 8 Jan 2018 18:20:21 +0000 (11:20 -0700)]
re PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)

PR rtl-optimizatin/81308
* tree-switch-conversion.c (cfg_altered): New file scoped static.
(process_switch): If group_case_labels makes a change, then set
cfg_altered.
(pass_convert_switch::execute): If a switch is converted, then
set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.

PR rtl-optimizatin/81308
* g++.dg/pr81308-1.C: New test.
* g++.dg/pr81308-2.C: New test.

From-SVN: r256349

6 years agore PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)
Jeff Law [Mon, 8 Jan 2018 18:17:51 +0000 (11:17 -0700)]
re PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)

PR rtl-optimization/81308
* recog.c (split_all_insns): Conditionally cleanup the CFG after
splitting insns.

From-SVN: r256348

6 years agors6000.c (rs6000_legitimate_combined_insn): Updated with the new names of the branch...
Aaron Sawdey [Mon, 8 Jan 2018 16:35:31 +0000 (10:35 -0600)]
rs6000.c (rs6000_legitimate_combined_insn): Updated with the new names of the branch decrement patterns...

* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
with the new names of the branch decrement patterns, and added the
names of the branch decrement conditional patterns.

From-SVN: r256347

6 years agoPR target/83663 - Revert r255946
Vidya Praveen [Mon, 8 Jan 2018 16:24:49 +0000 (16:24 +0000)]
PR target/83663 - Revert r255946

gcc/

2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>

PR target/83663 - Revert r255946
* config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
generation for cases where splatting a value is not useful.
* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
across a vec_duplicate and a paradoxical subreg forming a vector
mode to a vec_concat.

gcc/testsuite/

2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>

PR target/83663 - Revert r255946
* gcc.target/aarch64/vect-slp-dup.c: New.

From-SVN: r256346

6 years ago[arm] Add -march=armv8.3-a and dotprod multilib selection rules
Kyrylo Tkachov [Mon, 8 Jan 2018 15:15:08 +0000 (15:15 +0000)]
[arm] Add -march=armv8.3-a and dotprod multilib selection rules

We don't have the t-aprofile, t-multilib and t-arm-elf mapping
rules for multilibs when using the variants of -march=armv8.3-a
and the dotproduct extension.
This patch adds them. -march=armv8.3-a behaves in the same
way as -march=armv8.2-a in this regard.

Bootstrapped and tested with the aprofile multilib list.
Checked that --print-multi-directory gives sensible results
with armv8.3-a options and extensions.
I've also added some armv8.3-a, fp16 and dotprod
combination tests to multilib.exp

* config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
-march=armv8.3-a variants.
* config/arm/t-multilib: Likewise.
* config/arm/t-arm-elf: Likewise.  Handle dotprod extension.

* gcc.target/arm/multilib.exp: Add fp16, dotprod and armv8.3-a
combination tests.

From-SVN: r256345

6 years agors6000.md (cceq_ior_compare): Remove * so I can use it to generate rtl.
Aaron Sawdey [Mon, 8 Jan 2018 15:07:06 +0000 (15:07 +0000)]
rs6000.md (cceq_ior_compare): Remove * so I can use it to generate rtl.

2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

* config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
to generate rtl.
(cceq_ior_compare_complement): Give it a name so I can use it, and
change boolean_or_operator predicate to boolean_operator so it can
be used to generate a crand.
(eqne): New code iterator.
(bd/bd_neg): New code_attrs.
(<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
a single define_insn.
(<bd>tf_<mode>): A new insn pattern for the conditional form branch
decrement (bdnzt/bdnzf/bdzt/bdzf).
* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
with the new names of the branch decrement patterns, and added the
names of the branch decrement conditional patterns.

From-SVN: r256344

6 years agore PR tree-optimization/83563 ([graphite] ICE: Segmentation fault (in instantiate_sce...
Richard Biener [Mon, 8 Jan 2018 15:04:53 +0000 (15:04 +0000)]
re PR tree-optimization/83563 ([graphite] ICE: Segmentation fault (in instantiate_scev_r))

2018-01-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83563
* graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
cache.

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

From-SVN: r256343

6 years agore PR c++/83713 (ICE in do_narrow at gcc/convert.c:474)
Richard Biener [Mon, 8 Jan 2018 13:24:38 +0000 (13:24 +0000)]
re PR c++/83713 (ICE in do_narrow at gcc/convert.c:474)

2018-01-08  Richard Biener  <rguenther@suse.de>

PR middle-end/83713
* convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.

* g++.dg/torture/pr83713.C: New testcase.

From-SVN: r256341

6 years agoXfail ssa-dom-cse-2.c for nvptx
Tom de Vries [Mon, 8 Jan 2018 13:23:38 +0000 (13:23 +0000)]
Xfail ssa-dom-cse-2.c for nvptx

2018-01-08  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/tree-ssa/ssa-dom-cse-2.c: Xfail scan for nvptx.

From-SVN: r256340

6 years agore PR tree-optimization/83685 (ICE: SSA corruption)
Richard Biener [Mon, 8 Jan 2018 13:22:56 +0000 (13:22 +0000)]
re PR tree-optimization/83685 (ICE: SSA corruption)

2018-01-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83685
* tree-ssa-pre.c (create_expression_by_pieces): Do not insert
references to abnormals.

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

From-SVN: r256339

6 years agore PR lto/83719 (ICE (segfault) in hash_table<indirect_string_hasher, xcallocator...
Richard Biener [Mon, 8 Jan 2018 13:13:48 +0000 (13:13 +0000)]
re PR lto/83719 (ICE (segfault) in hash_table<indirect_string_hasher, xcallocator>::elements())

2018-01-08  Richard Biener  <rguenther@suse.de>

PR lto/83719
* dwarf2out.c (output_indirect_strings): Handle empty
skeleton_debug_str_hash.
(dwarf2out_early_finish): Index strings for -gsplit-dwarf.

* gcc.dg/lto/pr83719_0.c: New testcase.

From-SVN: r256338

6 years agoPR 78534 Regression on 32-bit targets
Janne Blomqvist [Mon, 8 Jan 2018 12:12:05 +0000 (14:12 +0200)]
PR 78534 Regression on 32-bit targets

By switching from int to size_t in order to handle larger values,
r256322 introduced a bug that manifested itself on 32-bit
targets. Fixed by using the correct type to store the result of a
next_array_record call.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu, committed to
trunk as obvious.

libgfortran/ChangeLog:

2018-01-08  Janne Blomqvist  <jb@gcc.gnu.org>

PR 78534, bugfix for r256322
* io/transfer.c (next_record_w): Use correct type for return value
of next_array_record.

From-SVN: r256337

6 years agoRequire stack size for some test-cases
Tom de Vries [Mon, 8 Jan 2018 11:50:14 +0000 (11:50 +0000)]
Require stack size for some test-cases

2018-01-08  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/graphite/interchange-7.c: Add dg-require-stack-size.
* gcc.dg/graphite/run-id-1.c: Same.
* gcc.dg/tree-ssa/loop-interchange-4.c: Same.

From-SVN: r256336

6 years agore PR fortran/83611 ([PDT] Assignment of parameterized types causes double free error...
Paul Thomas [Mon, 8 Jan 2018 11:20:33 +0000 (11:20 +0000)]
re PR fortran/83611 ([PDT] Assignment of parameterized types causes double free error in runtime)

2018-01-08  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/83611
* decl.c (gfc_get_pdt_instance): If parameterized arrays have
an initializer, convert the kind parameters and add to the
component if the instance.
* trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and
use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable'
for parameterized arrays. Clean up typos in comments. Convert
parameterized array initializers and copy into the array.
* trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for
parameterized types.
*trans-stmt.c (trans_associate_var): Deallocate associate vars
as necessary, when they are PDT function results for example.

PR fortran/83731
* trans-array.c (structure_alloc_comps): Only compare len parms
when they are declared explicitly.

2018-01-08  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/83611
* gfortran.dg/pdt_15.f03 : Bump count of 'n.data = 0B' to 8.
* gfortran.dg/pdt_26.f03 : Bump count of '_malloc' to 9.
* gfortran.dg/pdt_27.f03 : New test.

PR fortran/83731
* gfortran.dg/pdt_28.f03 : New test.

From-SVN: r256335

6 years ago[ARC] Revamp trampoline implementation
Claudiu Zissulescu [Mon, 8 Jan 2018 10:49:14 +0000 (11:49 +0100)]
[ARC] Revamp trampoline implementation

The new implementation attempts to clean up the existing trampoline
implementation for ARC making it to work for linux type of systems.

gcc/
2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
        (emit_store_direct): Likewise.
        (arc_trampoline_adjust_address): Likewise.
        (arc_asm_trampoline_template): New function.
        (arc_initialize_trampoline): Use asm_trampoline_template.
        (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
        * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
        *config/arc/arc.md (flush_icache): Delete pattern.

From-SVN: r256334

6 years ago[ARC] Enable unaligned access.
Claudiu Zissulescu [Mon, 8 Jan 2018 10:49:01 +0000 (11:49 +0100)]
[ARC] Enable unaligned access.

Use munaligned-access to control if we can have unaligned accesses.  For ARC
HS family unaligned access is always on.

2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
* config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
munaligned-access.

From-SVN: r256333

6 years agoRequire alloca for some test-cases
Tom de Vries [Mon, 8 Jan 2018 09:59:13 +0000 (09:59 +0000)]
Require alloca for some test-cases

2018-01-08  Tom de Vries  <tom@codesourcery.com>

* c-c++-common/builtins.c: Require effective target alloca.
* gcc.dg/Wrestrict.c: Same.
* gcc.dg/tree-ssa/loop-interchange-15.c: Same.

From-SVN: r256332

6 years agoepiphany: Enable Ada run-time build
Sebastian Huber [Mon, 8 Jan 2018 09:17:20 +0000 (09:17 +0000)]
epiphany: Enable Ada run-time build

gcc/

PR target/83681
* config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
by not USED_FOR_TARGET.
(make_pass_resolve_sw_modes): Likewise.

From-SVN: r256331

6 years agonios2: Enable Ada run-time build
Sebastian Huber [Mon, 8 Jan 2018 09:15:16 +0000 (09:15 +0000)]
nios2: Enable Ada run-time build

gcc/
* config/nios2/nios2.h (nios2_section_threshold): Guard by not
USED_FOR_TARGET.

From-SVN: r256330

6 years agore PR tree-optimization/83580 (Wrong code caused by vectorization)
Richard Biener [Mon, 8 Jan 2018 08:24:51 +0000 (08:24 +0000)]
re PR tree-optimization/83580 (Wrong code caused by vectorization)

2018-01-08  Richard Biener  <rguenther@suse.de>

PR middle-end/83580
* tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.

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

From-SVN: r256329

6 years agore PR tree-optimization/83517 (Missed optimization in math expression: (x+x)/x == 2)
Richard Biener [Mon, 8 Jan 2018 08:16:19 +0000 (08:16 +0000)]
re PR tree-optimization/83517 (Missed optimization in math expression: (x+x)/x == 2)

2018-01-08  Richard Biener  <rguenther@suse.de>

PR middle-end/83517
* match.pd ((t * 2) / 2) -> t): Add missing :c.

* gcc.dg/pr83517.c: New testcase.

From-SVN: r256328

6 years agoDaily bump.
GCC Administrator [Mon, 8 Jan 2018 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256327