gcc.git
7 years agoPR c++/79056 - C++17 ICE with invalid template syntax.
Jason Merrill [Fri, 23 Jun 2017 23:29:51 +0000 (19:29 -0400)]
PR c++/79056 - C++17 ICE with invalid template syntax.

* parser.c (cp_parser_simple_type_specifier): Don't assume that type
is a TYPE_DECL.
(cp_parser_check_for_invalid_template_id): Handle TYPE_DECL.
* pt.c (template_placeholder_p): New.
* cp-tree.h: Declare it.

From-SVN: r249614

7 years agoFix missing Aarch64 falkor/qdf24xx options.
Jim Wilson [Fri, 23 Jun 2017 21:40:55 +0000 (21:40 +0000)]
Fix missing Aarch64 falkor/qdf24xx options.

gcc/
* doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
qdf24xx.

From-SVN: r249613

7 years agoTestcase for FSF GCC bug 79794.
Jim Wilson [Fri, 23 Jun 2017 21:01:32 +0000 (21:01 +0000)]
Testcase for FSF GCC bug 79794.

gcc/testsuite/
PR middle-end/79794
* gcc.target/aarch64/pr79794.c: New.

From-SVN: r249612

7 years agoruntime: complete defer handling in CgocallBackDone
Ian Lance Taylor [Fri, 23 Jun 2017 20:19:40 +0000 (20:19 +0000)]
runtime: complete defer handling in CgocallBackDone

    When C code calls a Go function, it actually calls a function
    generated by cgo. That function is written in Go, and, among other
    things, it calls the real Go function like this:
            CgocallBack()
            defer CgocallBackDone()
            RealGoFunction()
    The deferred CgocallBackDone function enters syscall mode as we return
    to C. Typically the C function will then eventually return to Go.

    However, in the case where the C function is running on a thread
    created in C, it will not return to Go. For that case we will have
    allocated an m struct, with an associated g struct, for the duration
    of the Go code, and when the Go is complete we will return the m and g
    to a free list.

    That all works, but we are running in a deferred function, which means
    that we have been invoked by deferreturn, and deferreturn expects to
    do a bit of cleanup to record that the defer has been completed. Doing
    that cleanup while using an m and g that have already been returned to
    the free list is clearly a bad idea. It was kind of working because
    deferreturn was holding the g pointer in a local variable, but there
    were races with some other thread picking up and using the newly freed g.
    It was also kind of working because of a special check in freedefer;
    that check is no longer necessary.

    This patch changes the special case of releasing the m and g to do the
    defer cleanup in CgocallBackDone itself.

    This patch also checks for the special case of a panic through
    CgocallBackDone. In that special case, we don't want to release the m
    and g. Since we are returning to C code that was not called by Go
    code, we know that the panic is not going to be caught and we are
    going to exit the program. So for that special case we keep the m and
    g structs so that the rest of the panic code can use them.

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

From-SVN: r249611

7 years agocmd/go: don't require GOROOT to exist for gccgo
Ian Lance Taylor [Fri, 23 Jun 2017 20:11:27 +0000 (20:11 +0000)]
cmd/go: don't require GOROOT to exist for gccgo

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

From-SVN: r249609

7 years agors6000-string.c: (expand_block_clear...
Aaron Sawdey [Fri, 23 Jun 2017 19:59:42 +0000 (19:59 +0000)]
rs6000-string.c: (expand_block_clear...

2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

* config/rs6000/rs6000-string.c: (expand_block_clear,
do_load_for_compare, select_block_compare_mode,
compute_current_alignment, expand_block_compare,
expand_strncmp_align_check, expand_strn_compare,
expand_block_move, rs6000_output_load_multiple)
Move functions related to string/block move/compare
to a separate file.
* config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
* config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
for this function which is now used in two files.
* config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
* config.gcc: Add rs6000-string.o to extra_objs for
targets powerpc*-*-* and rs6000*-*-*.

From-SVN: r249608

7 years agore PR target/80510 (Optimize Power7/power8 Altivec load/stores)
Michael Meissner [Fri, 23 Jun 2017 18:25:10 +0000 (18:25 +0000)]
re PR target/80510 (Optimize Power7/power8 Altivec load/stores)

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

PR target/80510
* config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
32-bit, since indexed is not valid for DImode.
(mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
(define_peephole2 for Altivec d-form load): Add 32-bit support.
(define_peephole2 for Altivec d-form store): Likewise.

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

PR target/80510
* gcc.target/powerpc/pr80510-1.c: Allow test to run on 32-bit.
* gcc.target/powerpc/pr80510-2.c: Likewise.

From-SVN: r249607

7 years agore PR ipa/81185 (Target clones support generates awkward names)
Michael Meissner [Fri, 23 Jun 2017 18:08:31 +0000 (18:08 +0000)]
re PR ipa/81185 (Target clones support generates awkward names)

2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR ipa/81185
* multiple_target.c (create_dispatcher_calls): Only create the
dispatcher call if the function is the default clone of a
versioned function.

From-SVN: r249605

7 years agotrans.c (gnat_to_gnu): Initialize sync to false to avoid UB.
Jakub Jelinek [Fri, 23 Jun 2017 17:46:21 +0000 (19:46 +0200)]
trans.c (gnat_to_gnu): Initialize sync to false to avoid UB.

* gcc-interface/trans.c (gnat_to_gnu): Initialize sync to false to
avoid UB.

From-SVN: r249604

7 years agoFix expand_builtin_atomic_fetch_op for pre-op (PR80902)
Segher Boessenkool [Fri, 23 Jun 2017 17:37:27 +0000 (19:37 +0200)]
Fix expand_builtin_atomic_fetch_op for pre-op (PR80902)

__atomic_add_fetch adds a value to some memory, and returns the result.
If there is no direct support for this, expand_builtin_atomic_fetch_op
is asked to implement this as __atomic_fetch_add (which returns the
original value of the mem), followed by the addition.  Now, the
__atomic_add_fetch could have been a tail call, but we shouldn't
perform the __atomic_fetch_add as a tail call: following code would
not be executed, and in fact thrown away because there is a barrier
after tail calls.

This fixes it.

PR middle-end/80902
* builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
a call, force the call to not be a tail call.

From-SVN: r249603

7 years agoos-unix-sysdep.c (__cilkrts_getticks): Adjust preprocessor test for SPARC/Linux.
Eric Botcazou [Fri, 23 Jun 2017 17:33:43 +0000 (19:33 +0200)]
os-unix-sysdep.c (__cilkrts_getticks): Adjust preprocessor test for SPARC/Linux.

* runtime/config/sparc/os-unix-sysdep.c (__cilkrts_getticks): Adjust
preprocessor test for SPARC/Linux.
* runtime/jmpbuf.h (CILK_[UN]ADJUST_SP): Likewise.

From-SVN: r249601

7 years agoos: align siginfo argument to waitid
Ian Lance Taylor [Fri, 23 Jun 2017 17:10:18 +0000 (17:10 +0000)]
os: align siginfo argument to waitid

    Backport https://golang.org/cl/46511 from gc trunk, as it may fix a
    bug reported for gccgo running on MIPS
    (https://groups.google.com/d/msg/golang-dev/sDg-t1_DPw0/-AJmLxgPBQAJ).

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

From-SVN: r249599

7 years agoruntime: don't crash if no p in kickoff
Ian Lance Taylor [Fri, 23 Jun 2017 16:05:44 +0000 (16:05 +0000)]
runtime: don't crash if no p in kickoff

    The kickoff function for g0 can be invoked without a p, for example
    from mcall(exitsyscall0) in exitsyscall after exitsyscall has cleared
    the p field. The assignment gp.param = nil will invoke a write barrier.
    If gp.param is not already nil, this will require a p. Avoid the problem
    for a specific case that is known to be OK: when the value in gp.param
    is a *g.

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

From-SVN: r249595

7 years agocompiler: add go:notinheap magic comment
Ian Lance Taylor [Fri, 23 Jun 2017 16:03:49 +0000 (16:03 +0000)]
compiler: add go:notinheap magic comment

    Implement go:notinheap as the gc compiler does. A type marked as
    go:notinheap may not live in the heap, and does not require a write
    barrier. Struct and array types that incorporate notinheap types are
    themselves notinheap. Allocating a value of a notinheap type on the
    heap is an error.

    This is not just an optimization. There is code where a write barrier
    may not occur that was getting a write barrier with gccgo but not gc,
    because the types in question were notinheap. The case I found was
    setting the mcache field in exitsyscallfast.

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

From-SVN: r249594

7 years agocontrib.texi: Add entry for Steven Pemberton's work on enquire.
Jeff Law [Fri, 23 Jun 2017 15:57:58 +0000 (09:57 -0600)]
contrib.texi: Add entry for Steven Pemberton's work on enquire.

* doc/contrib.texi: Add entry for Steven Pemberton's work on
enquire.

From-SVN: r249593

7 years ago* gcc.c-torture/compile/stack-check-1.c: Require "untyped_assembly".
Jeff Law [Fri, 23 Jun 2017 14:57:52 +0000 (08:57 -0600)]
* gcc.c-torture/compile/stack-check-1.c: Require "untyped_assembly".

From-SVN: r249592

7 years agors6000.c: Add include of ssa-propagate.h for update_call_from_tree().
Will Schmidt [Fri, 23 Jun 2017 14:40:26 +0000 (14:40 +0000)]
rs6000.c: Add include of ssa-propagate.h for update_call_from_tree().

[gcc]

2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>

* config/rs6000/rs6000.c: Add include of ssa-propagate.h for
update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
handling for early expansion of vector shifts (sl,sr,sra,rl).
(builtin_function_type): Add vector shift right instructions
to the unsigned argument list.

[gcc/testsuite]

2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-shift-char.c: New.
* gcc.target/powerpc/fold-vec-shift-int.c: New.
* gcc.target/powerpc/fold-vec-shift-longlong.c: New.
* gcc.target/powerpc/fold-vec-shift-short.c: New.
* gcc.target/powerpc/fold-vec-shift-left.c: New.
* gcc.target/powerpc/fold-vec-shift-left-fwrapv.c: New.
* gcc.target/powerpc/fold-vec-shift-left-longlong-fwrapv.c: New.
* gcc.target/powerpc/fold-vec-shift-left-longlong.c: New.

From-SVN: r249591

7 years agoruntime: improve handling of panic during deferred function
Ian Lance Taylor [Fri, 23 Jun 2017 13:45:36 +0000 (13:45 +0000)]
runtime: improve handling of panic during deferred function

    When a panic occurs while processing a deferred function that
    recovered an earlier panic, we shouldn't report the recovered panic
    in the panic stack trace. Stop doing so by keeping track of the panic
    that triggered a defer, marking it as aborted if we see the defer again,
    and discarding aborted panics when a panic is recovered. This is what
    the gc runtime does.

    The test for this is TestRecursivePanic in runtime/crash_test.go.
    We don't run that test yet, but we will soon.

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

From-SVN: r249590

7 years agogo-test.exp (go-set-goarch): Update MIPS architecture names.
James Cowgill [Fri, 23 Jun 2017 13:19:30 +0000 (13:19 +0000)]
go-test.exp (go-set-goarch): Update MIPS architecture names.

* go.test/go-test.exp (go-set-goarch): Update MIPS architecture
        names.

From-SVN: r249589

7 years agoira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
Bernd Edlinger [Fri, 23 Jun 2017 12:44:07 +0000 (12:44 +0000)]
ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.

2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        rtl-optimizatoin/79286
        * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
        * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
        trap.  PIC register plus a const unspec without offset can never trap.

From-SVN: r249588

7 years agoRefactor fileptr_type_node handling
Marc Glisse [Fri, 23 Jun 2017 09:05:47 +0000 (11:05 +0200)]
Refactor fileptr_type_node handling

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

gcc/
* tree.h (builtin_structptr_type): New type.
(builtin_structptr_types): Declare new array.
* tree.c (builtin_structptr_types): New array.
(free_lang_data, build_common_tree_nodes): Use it.

gcc/c-family/
* c-common.c (c_common_nodes_and_builtins): Use builtin_structptr_types.

gcc/cp/
* decl.c (duplicate_decls): Use builtin_structptr_types.

gcc/lto/
* lto-lang.c (lto_init): Use builtin_structptr_types.

From-SVN: r249585

7 years agoPR c++/81187 fix -Wnoexcept-type entry in manual
Jonathan Wakely [Fri, 23 Jun 2017 08:16:05 +0000 (09:16 +0100)]
PR c++/81187 fix -Wnoexcept-type entry in manual

PR c++/81187
* doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
-Wnoexcept.

From-SVN: r249584

7 years agoDaily bump.
GCC Administrator [Fri, 23 Jun 2017 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r249583

7 years agoruntime: uncomment check for gchelper on g0 stack
Ian Lance Taylor [Thu, 22 Jun 2017 22:12:50 +0000 (22:12 +0000)]
runtime: uncomment check for gchelper on g0 stack

    Now that systemstack changes to the g0 stack, this check passes.

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

From-SVN: r249578

7 years agoruntime: mark dropm and callees nowritebarrierrec
Ian Lance Taylor [Thu, 22 Jun 2017 22:11:01 +0000 (22:11 +0000)]
runtime: mark dropm and callees nowritebarrierrec

    The CgocallbackDone function calls dropm after it calls entersyscall,
    which means that dropm must not have any write barriers. Mark it
    accordingly.

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

From-SVN: r249577

7 years agoruntime: export getm function
Ian Lance Taylor [Thu, 22 Jun 2017 22:08:50 +0000 (22:08 +0000)]
runtime: export getm function

    Use go:linkname to export the getm function. This makes it visible to
    runtime/testdata/testprogcgo/dropm_stub.go, which uses it as part of
    the TestEnsureDropM test in runtime/crash_cgo_test.go. That test is
    not run today, but it will be soon.

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

From-SVN: r249576

7 years agoruntime: fix type cast in assignment to gcnextsp in C code
Ian Lance Taylor [Thu, 22 Jun 2017 19:52:11 +0000 (19:52 +0000)]
runtime: fix type cast in assignment to gcnextsp in C code

    Patch from Rainer Orth.

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

From-SVN: r249575

7 years agodriver-i386.c (host_detect_local_cpu): Add Kaby Lake models to skylake case.
Matt Turner [Thu, 22 Jun 2017 19:46:10 +0000 (19:46 +0000)]
driver-i386.c (host_detect_local_cpu): Add Kaby Lake models to skylake case.

gcc/

2017-06-22  Matt Turner  <mattst88@gmail.com>

* config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
Lake models to skylake case.  Assume skylake for unknown
models with clflushopt.

gcc/testsuite/

2017-06-22  Matt Turner  <mattst88@gmail.com>

* gcc.target/i386/builtin_target.c: Add Kaby Lake models to
skylake check.

libgcc/

2017-06-22  Matt Turner  <mattst88@gmail.com>

* config/i386/cpuinfo.c (get_intel_cpu): Add Kaby Lake models to
skylake case.

From-SVN: r249574

7 years agobuiltins-3.c (vmulosh, [...]): Fix scan-assembler-times should check for word not...
Carl Love [Thu, 22 Jun 2017 18:45:35 +0000 (18:45 +0000)]
builtins-3.c (vmulosh, [...]): Fix scan-assembler-times should check for word not half word instructions.

gcc/testsuite/ChangeLog:

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

* gcc.target/powerpc/builtins-3.c (vmulosh, vmulouh, vmulesh,
vmuleuh): Fix scan-assembler-times should check for word not half word
instructions.

From-SVN: r249572

7 years agoReorder IDENTIFIER flags
Nathan Sidwell [Thu, 22 Jun 2017 18:40:56 +0000 (18:40 +0000)]
Reorder IDENTIFIER flags

Reorder IDENTIFIER flags
gcc/cp/
* cp-tree.h (enum cp_identifier_kind): New.
(IDENTIFIER_KIND_BIT_0, IDENTIFIER_KIND_BIT_1,
IDENTIFIER_KIND_BIT_2): New.
(IDENTIFIER_MARKED): Move to TREE_LANG_FLAG_4.
(IDENTIFIER_VIRTUAL_P, IDENTIFIER_REPO_CHOSEN): Add
IDENTIFIER_CHECK.
(C_IS_RESERVED_WORD): Replace with ...
(IDENTIFIER_KEYWORD_P): ... this.
(IDENTIFIER_CTOR_OR_DTOR_P): Replace with ...
(IDENTIFIER_CDTOR_P): ... this.
(IDENTIFIER_CTOR_P, IDENTIFIER_DTOR_P): New.
(IDENTIFIER_OPNAME_P): Replace with ...
(IDENTIFIER_ANY_OP_P): ... this.
(IDENTIFIER_ASSIGN_OP_P): New.
(IDENTIFIER_TYPENAME_P): Replace with ...
(IDENTIFIER_CONV_OP_P): ... this.
(NEW_DELETE_OPNAME_P): Replace with ...
(IDENTIFIER_NEWDEL_OP_P): ... this.
(DECL_CONV_FN_P, DECL_OVERLOADED_OPERATOR_P): Adjust.
(get_identifier_kind_name, set_identifier_kind): Declare.
* lex.c (get_identifier_kind_name, set_identifier_kind): New.
(init_operators): Adjust to avoid keywords, use
set_identifier_kind. Copy TYPE_EXPR slot.
(init_reswords): Call set_identifier_kind.
(unqualified_name_lookup_error): Adjust.
* operators.def (TYPE_EXPR): Remove.
* decl.c (struct predefined_identifier): Move into ...
(initialize_predefined_identifiers): ... here.  Call
set_identifier_kind.
(grokfndecl, check_var_type, grokdeclarator): Adjust.
(grok_op_properties): Use IDENTIFIER_ANY_ASSIGN_OP to halve search
space.  Adjust.
* call.c (name_as_c_string): Adjust.
(build_new_method_call_1): Likewise.
* cp-cilkplus.c (is_conversion_operator_function_decl_p):
Likewise.
* cxx-pretty-print.c (pp_cxx_unqualified_id): Adjust.
* dump.c (cp_dump_tree): Adjust.
* error.c (dump_decl_name): Adjust.
* mangle.c (write_unqualified_id, write_member_name)
write_expression): Adjust.
(mangle_conv_op_name_for_type): Use set_identifier_kind.
* name-lookup.c (do_class_using_decl): Adjust.
(lookup_name_fuzzy, lookup_name_real_1): Likewise.
* parser.c (cp_lexer_get_preprocessor_token)
cp_parser_direct_declarator): Likewise.
* pt.c (push_template_decl_real, tsubst_decl, tsubst_baselink)
tsubst_copy, tsubst_copy_and_build): Adjust.
* ptree.c (cxx_print_identifier): Print identifier kind.
* search.c (lookup_field_r, lookup_member)
lookup_fnfields_idx_nolazy): Adjust.
* semantics.c (finish_id_expression): Adjust..
* typeck.c (cp_build_addr_expr_1): Adjust.

From-SVN: r249571

7 years agoaarch64.c (aarch64_emit_probe_stack_range): Handle frame sizes that do not satisfy...
Jeff Law [Thu, 22 Jun 2017 17:18:05 +0000 (11:18 -0600)]
aarch64.c (aarch64_emit_probe_stack_range): Handle frame sizes that do not satisfy aarch64_uimm12_shift.

* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
frame sizes that do not satisfy aarch64_uimm12_shift.

* gcc.c-torture/compile/stack-check-1.c: New test.

From-SVN: r249566

7 years agoruntime: make NumGoroutine wait for system goroutines to register
Ian Lance Taylor [Thu, 22 Jun 2017 15:46:47 +0000 (15:46 +0000)]
runtime: make NumGoroutine wait for system goroutines to register

    In libgo system goroutines register themselves after they start.
    That means that there is a small race between the goroutine being
    seen by the scheduler and the scheduler knowing that the goroutine
    is a system goroutine. That in turn means that runtime.NumGoroutines
    can overestimate the number of goroutines at times.

    This patch fixes the overestimate by counting the number of system
    goroutines waiting to start, and pausing NumGoroutines until those
    goroutines have all registered.

    This is kind of a lot of mechanism for this not very important
    problem, but I couldn't think of a better approach.

    The test for this is TestNumGoroutine in runtime/proc_test.go.
    The test is not currently run, but it will be soon.

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

From-SVN: r249565

7 years agocompiler: fix stale comment in lexer
Ian Lance Taylor [Thu, 22 Jun 2017 15:42:50 +0000 (15:42 +0000)]
compiler: fix stale comment in lexer

    Remove stale comment in code that accepts "go:nowritebarrier"
    pragma. Update comment for "go:nowritebarrierrec".

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

From-SVN: r249564

7 years agoprofile-count.h (apply_probability, [...]): Fix checks for zero.
Jan Hubicka [Thu, 22 Jun 2017 14:50:23 +0000 (16:50 +0200)]
profile-count.h (apply_probability, [...]): Fix checks for zero.

* profile-count.h (apply_probability,
apply_scale, probability_in): Fix checks for zero.

From-SVN: r249563

7 years agoruntime: don't assume that _ = *s will panic if s is nil
Ian Lance Taylor [Thu, 22 Jun 2017 14:46:12 +0000 (14:46 +0000)]
runtime: don't assume that _ = *s will panic if s is nil

    With the gc toolchain apparently
            var s *string
            _ = *s
    is enough to panic with a nil pointer dereference. The gccgo compiler
    will simply discard the dereference, which I think is a reasonable and
    acceptable optimization. Change the tests to use an exported variable
    instead. The tests are not currently run, but they will be with a
    later patch to gotools.

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

From-SVN: r249562

7 years agoruntime: change some stack fields to uintptr
Ian Lance Taylor [Thu, 22 Jun 2017 14:44:30 +0000 (14:44 +0000)]
runtime: change some stack fields to uintptr

    Because of how gccgo implements cgo calls, the code in dropm may not
    have any write barriers.  As a step toward implementing that, change
    the gcstack, gcnextsegment, and gcnextsp fields of the g struct to
    uintptr, so that assignments to them do not require write barriers.
    The gcinitialsp field remains unsafe.Pointer, as on 32-bit systems
    that do not support split stack it points to a heap allocated space
    used for the goroutine stack.

    The test for this is runtime tests like TestCgoCallbackGC, which are
    not run today but will be run with a future gotools patch.

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

From-SVN: r249561

7 years agoSupport $SYSROOT for = in -I etc.
Rainer Orth [Thu, 22 Jun 2017 14:37:17 +0000 (14:37 +0000)]
Support $SYSROOT for = in -I etc.

* incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
* doc/cppdiropts.texi (-I @var{dir}): Document it.

From-SVN: r249560

7 years agoruntime: avoid write barriers when calling deferred function
Ian Lance Taylor [Thu, 22 Jun 2017 14:33:13 +0000 (14:33 +0000)]
runtime: avoid write barriers when calling deferred function

    Calling a deferred function currently requires changing from a uintptr
    to the function code to a Go function value. That is done by setting
    the value of a func local variable using unsafe.Pointer. The local
    variable will always be on the stack. Adjust the code that sets the
    local variable to avoid generating a write barrier.

    A write barrier is never needed here. Also, for deferreturn, we must
    avoid write barriers entirely when called from a cgo function; that
    requires more than just this, but this is a start.

    The test for this is runtime tests that use the go tool; these are not
    currently run, but they will be in the future.

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

From-SVN: r249559

7 years agoruntime: rename _defer struct _panic field to panicStack
Ian Lance Taylor [Thu, 22 Jun 2017 14:31:16 +0000 (14:31 +0000)]
runtime: rename _defer struct _panic field to panicStack

    The gc version of the _defer struct has a _panic field that has a
    completely different meaning. We are going to want that bring that new
    meaning into the gofrontend to improve panic reports with nested
    panic calls. Simplify that by first renaming the existing _panic field.

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

From-SVN: r249558

7 years agoruntime: adjust tests for gofrontend
Ian Lance Taylor [Thu, 22 Jun 2017 14:28:57 +0000 (14:28 +0000)]
runtime: adjust tests for gofrontend

    - don't run tests that depend on SetCgoTraceback
    - don't expect a '(' after the function name in a traceback
    - change the expected name of nested functions in a traceback

    These tests are not currently run, but they will be soon.

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

From-SVN: r249557

7 years agoruntime: don't build test files that use SetCgoTraceback for gccgo
Ian Lance Taylor [Thu, 22 Jun 2017 14:27:09 +0000 (14:27 +0000)]
runtime: don't build test files that use SetCgoTraceback for gccgo

    The gofrontend doesn't support the runtime.SetCgoTraceback function,
    which is specifically for handling mixed Go and C tracebacks.
    Use a build tag to avoid compiling the runtime/testdata/testprogcgo
    files that refer to SetCgoTraceback. These files are not currently
    compiled anyhow, but they will be with a future gotools patch.

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

From-SVN: r249556

7 years agoruntime: build testprogcgo with -pthread
Ian Lance Taylor [Thu, 22 Jun 2017 14:23:54 +0000 (14:23 +0000)]
runtime: build testprogcgo with -pthread

    Building this test with gccgo requires an explicit -pthread option to
    be passed to the C compiler, so that it links against -lpthread.
    This test is not built today, but it will be soon with a future patch.

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

From-SVN: r249555

7 years agoPR libstdc++/81173 fix undefined memset with null pointer
Jonathan Wakely [Thu, 22 Jun 2017 14:16:38 +0000 (15:16 +0100)]
PR libstdc++/81173 fix undefined memset with null pointer

PR libstdc++/81173
* include/bits/stl_bvector.h (vector<bool>::_M_initialize_value):
Do not pass null pointer to memset.

From-SVN: r249554

7 years agotree-vect-loop.c (vect_model_reduction_cost): Handle COND_REDUCTION and INTEGER_INDUC...
Richard Biener [Thu, 22 Jun 2017 12:07:07 +0000 (12:07 +0000)]
tree-vect-loop.c (vect_model_reduction_cost): Handle COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without REDUC_MAX_EXPR...

2016-06-22  Richard Biener  <rguenther@suse.de>

* tree-vect-loop.c (vect_model_reduction_cost): Handle
COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
REDUC_MAX_EXPR support.
(vectorizable_reduction): Likewise.
(vect_create_epilog_for_reduction): Likewise.

* gcc.dg/vect/pr65947-1.c: Remove xfail.
* gcc.dg/vect/pr65947-2.c: Likewise.
* gcc.dg/vect/pr65947-3.c: Likewise.
* gcc.dg/vect/pr65947-4.c: Likewise.
* gcc.dg/vect/pr65947-5.c: Likewise.
* gcc.dg/vect/pr65947-6.c: Likewise.
* gcc.dg/vect/pr65947-8.c: Likewise.
* gcc.dg/vect/pr65947-9.c: Likewise.
* gcc.dg/vect/pr65947-10.c: Likewise.
* gcc.dg/vect/pr65947-12.c: Likewise.
* gcc.dg/vect/pr65947-13.c: Likewise.
* gcc.dg/vect/pr65947-14.c: Likewise.
* gcc.dg/vect/vect-cond-2.c: Likewise.
* gcc.dg/vect/vect-pr69848.c: Likewise.

From-SVN: r249553

7 years agoFix ipa-split-5.c test-case.
Martin Liska [Thu, 22 Jun 2017 10:54:40 +0000 (12:54 +0200)]
Fix ipa-split-5.c test-case.

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

* gcc.dg/tree-ssa/ipa-split-5.c: Make function bigger in order
to not inline it.

From-SVN: r249503

7 years ago[Patch match.pd] Fold (A / (1 << B)) to (A >> B)
James Greenhalgh [Thu, 22 Jun 2017 08:39:04 +0000 (08:39 +0000)]
[Patch match.pd] Fold (A / (1 << B)) to (A >> B)

For the testcase in the patch:

  unsigned long
  f2 (unsigned long a, int b)
  {
    unsigned long x = 1UL << b;
    return a / x;
  }

We currently generate an unsigned division and a left shift, where
we could instead generate a right shift.

gcc/

2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>

* match.pd (A / (1 << B) -> A >> B): New.
* generic-match-head.c: Include optabs-tree.h.
* gimple-match-head.c: Likewise.
* optabs-tree.h (target_supports_op_p): New.
* optabs-tree.c (target_supports_op_p): New.

gcc/testsuite/

2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>

* gcc.dg/tree-ssa/forwprop-37.c: New.

From-SVN: r249502

7 years agopr65947-14.c: Fix missing brace.
Richard Biener [Thu, 22 Jun 2017 08:33:28 +0000 (08:33 +0000)]
pr65947-14.c: Fix missing brace.

2017-06-22  Richard Biener  <rguenther@suse.de>

* gcc.dg/vect/pr65947-14.c: Fix missing brace.

From-SVN: r249501

7 years agopr65947-14.c: New testcase.
Richard Biener [Thu, 22 Jun 2017 08:14:21 +0000 (08:14 +0000)]
pr65947-14.c: New testcase.

2017-06-22  Richard Biener  <rguenther@suse.de>

* gcc.dg/vect/pr65947-14.c: New testcase.

From-SVN: r249500

7 years agoSupport --sysroot with Solaris ld
Rainer Orth [Thu, 22 Jun 2017 06:54:04 +0000 (06:54 +0000)]
Support --sysroot with Solaris ld

* configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
$gcc_cv_ld --help output.
(gcc_cv_ld_demangle): Likewise.
(gcc_cv_ld_eh_frame_hdr): Likewise.
(gcc_cv_ld_pie): Likewise.
(gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
(gcc_cv_ld_buildid): Likewise.
(gcc_cv_ld_sysroot): Likewise.
(ld_bndplt_support): Likewise.
(ld_pushpopstate_support): Likewise.
* configure: Regenerate.
* config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.

From-SVN: r249496

7 years agoruntime: in traceback, print panic rather than runtime.gopanic
Ian Lance Taylor [Thu, 22 Jun 2017 04:16:23 +0000 (04:16 +0000)]
runtime: in traceback, print panic rather than runtime.gopanic

    The gc toolchain does the same thing, in gentraceback in
    runtime/traceback.go.

    The test for this is TestPanicTraceback in runtime/crash_test.go.  We
    don't yet run that test, but we will in a future change.

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

From-SVN: r249495

7 years agocompiler, runtime: better stack trace for `go f()` where f is nil
Ian Lance Taylor [Thu, 22 Jun 2017 04:13:36 +0000 (04:13 +0000)]
compiler, runtime: better stack trace for `go f()` where f is nil

    The test for this is TestGoNil in the runtime package, which we don't
    run yet but will run with a subsequent gotools patch.

    Updates golang/go#8045

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

From-SVN: r249494

7 years agoDaily bump.
GCC Administrator [Thu, 22 Jun 2017 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r249492

7 years agodebug/elf: handle Alpha relocs
Ian Lance Taylor [Wed, 21 Jun 2017 22:39:36 +0000 (22:39 +0000)]
debug/elf: handle Alpha relocs

    Patch by Uros Bizjak.

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

From-SVN: r249487

7 years agocompiler: fix missing case in Array_type::get_value_pointer
Ian Lance Taylor [Wed, 21 Jun 2017 22:29:58 +0000 (22:29 +0000)]
compiler: fix missing case in Array_type::get_value_pointer

    Update the code in Array_type::get_value_pointer that handles
    "lvalue" context to look for both regular var expressions
    and temp var expressions, since both can appear in array/slice
    index expressions on the left hand side of assignments.

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

From-SVN: r249486

7 years agoForgot to remove this file in the last libgo commit.
Ian Lance Taylor [Wed, 21 Jun 2017 22:29:36 +0000 (22:29 +0000)]
Forgot to remove this file in the last libgo commit.

libgo: remove old MIPS architecture names

    This removes the old names for the 3 main MIPS ABIs: mipso32, mipsn32
    and mipsn64. It also removes the mipso64 ABI which has no equivalent
    architecture name in go. This ABI has been dead for sometime and I doubt
    anyone will miss it.

    Change-Id: I087b243784edf6705fdaf9c32e3233da5e387283

From-SVN: r249485

7 years agolibgo: remove old MIPS architecture names
Ian Lance Taylor [Wed, 21 Jun 2017 22:11:04 +0000 (22:11 +0000)]
libgo: remove old MIPS architecture names

    This removes the old names for the 3 main MIPS ABIs: mipso32, mipsn32
    and mipsn64. It also removes the mipso64 ABI which has no equivalent
    architecture name in go. This ABI has been dead for sometime and I doubt
    anyone will miss it.

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

From-SVN: r249477

7 years agolibgo: use gc's arch names as the default GOARCHs on MIPS
Ian Lance Taylor [Wed, 21 Jun 2017 21:55:34 +0000 (21:55 +0000)]
libgo: use gc's arch names as the default GOARCHs on MIPS

    This means that the gc tools and gofrontend agree on the architecture names
    for the 3 MIPS ABIs which should allow a gofrontend compiler to build go.

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

From-SVN: r249476

7 years agocmd/cgo: add mips64p32* to ptrSizeMap and intSizeMap
Ian Lance Taylor [Wed, 21 Jun 2017 21:50:52 +0000 (21:50 +0000)]
cmd/cgo: add mips64p32* to ptrSizeMap and intSizeMap

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

From-SVN: r249475

7 years agointernal/syscall/unix: implement randomTrap on mips64p32*
Ian Lance Taylor [Wed, 21 Jun 2017 21:47:35 +0000 (21:47 +0000)]
internal/syscall/unix: implement randomTrap on mips64p32*

    Rename getrandom_linux_mipsn32.go to use the new architecture name for
    the n32 ABI and enable building it on mips64p32 and mips64p32le.

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

From-SVN: r249474

7 years agolibgo, syscall: fix ptrace implementation on MIPS
Ian Lance Taylor [Wed, 21 Jun 2017 21:46:03 +0000 (21:46 +0000)]
libgo, syscall: fix ptrace implementation on MIPS

    On MIPS, the correct structure for PtraceRegs is 'struct pt_regs' which
    is declared in linux/ptrace.h. Previously no PtraceRegs structure was
    created on MIPS because 'struct user_regs_struct' doesn't exist there.

    Fallback to using pt_regs when the PtraceRegs structure is generated in
    mksysinfo.sh, then adjust syscall_linux_mipsx.go to read the program
    counter from the correct field.

    In addition, implement PtraceGetRegs and PtraceSetRegs on all 3 ABI
    variants.

    syscall_linux_mips64x.go can now be removed since the ptrace code on
    all 3 ABIs is identical.

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

From-SVN: r249473

7 years agolibgo, syscall: fix ptrace implementation on MIPS
Ian Lance Taylor [Wed, 21 Jun 2017 21:42:41 +0000 (21:42 +0000)]
libgo, syscall: fix ptrace implementation on MIPS

    On MIPS, the correct structure for PtraceRegs is 'struct pt_regs' which
    is declared in linux/ptrace.h. Previously no PtraceRegs structure was
    created on MIPS because 'struct user_regs_struct' doesn't exist there.

    Fallback to using pt_regs when the PtraceRegs structure is generated in
    mksysinfo.sh, then adjust syscall_linux_mipsx.go to read the program
    counter from the correct field.

    In addition, implement PtraceGetRegs and PtraceSetRegs on all 3 ABI
    variants.

    syscall_linux_mips64x.go can now be removed since the ptrace code on
    all 3 ABIs is identical.

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

From-SVN: r249472

7 years agore PR target/80510 (Optimize Power7/power8 Altivec load/stores)
Michael Meissner [Wed, 21 Jun 2017 21:08:40 +0000 (21:08 +0000)]
re PR target/80510 (Optimize Power7/power8 Altivec load/stores)

2017-06-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/80510
* gcc.target/powerpc/pr80510-1.c: Restrict test to 64-bit until
32-bit support is added.  Change ITYPE size to 64-bit integer.
* gcc.target/powerpc/pr80510-2.c: Likewise.

From-SVN: r249470

7 years agore PR target/81151 (-Wmaybe-uninitialized in insn-emit.c)
Jakub Jelinek [Wed, 21 Jun 2017 20:02:00 +0000 (22:02 +0200)]
re PR target/81151 (-Wmaybe-uninitialized in insn-emit.c)

PR target/81151
* config/i386/sse.md (round<mode>2): Renumber match_dup and
operands indexes to avoid gap between operands and match_dups.

From-SVN: r249469

7 years agoPR libstdc++/80675, PR libstdc++/80940
Ville Voutilainen [Wed, 21 Jun 2017 19:53:26 +0000 (22:53 +0300)]
PR libstdc++/80675, PR libstdc++/80940

* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

From-SVN: r249468

7 years agore PR c++/81154 (OpenMP with shared variable in a template class crash)
Jakub Jelinek [Wed, 21 Jun 2017 18:30:32 +0000 (20:30 +0200)]
re PR c++/81154 (OpenMP with shared variable in a template class crash)

PR c++/81154
* semantics.c (handle_omp_array_sections_1, finish_omp_clauses):
Complain about t not being a variable if t is OVERLOAD even
when processing_template_decl.

* g++.dg/gomp/pr81154.C: New test.

From-SVN: r249467

7 years agoFix variant selection in dg-cmp-results.sh
Thomas Preud'homme [Wed, 21 Jun 2017 16:20:57 +0000 (16:20 +0000)]
Fix variant selection in dg-cmp-results.sh

2017-06-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    contrib/
    * dg-cmp-results.sh: Restore filtering on target variant.

From-SVN: r249463

7 years agoMAINTAINERS: Add myself as maintainer for PowerPC SPE port.
Andrew Jenner [Wed, 21 Jun 2017 16:17:24 +0000 (16:17 +0000)]
MAINTAINERS: Add myself as maintainer for PowerPC SPE port.

       * MAINTAINERS: Add myself as maintainer for PowerPC SPE port.

From-SVN: r249462

7 years agoC++: Add fix-it hints for -Wold-style-cast
David Malcolm [Wed, 21 Jun 2017 16:11:36 +0000 (16:11 +0000)]
C++: Add fix-it hints for -Wold-style-cast

gcc/cp/ChangeLog:
* parser.c (get_cast_suggestion): New function.
(maybe_add_cast_fixit): New function.
(cp_parser_cast_expression): Capture the location of the closing
parenthesis.  Call maybe_add_cast_fixit when emitting warnings
about old-style casts.

gcc/testsuite/ChangeLog:
* g++.dg/other/old-style-cast-fixits.C: New test case.

From-SVN: r249461

7 years agoaarch64-cost-tables.h (thunderx_extra_costs): Increment Arith_shift and Arith_shift_r...
Andrew Pinski [Wed, 21 Jun 2017 15:58:12 +0000 (15:58 +0000)]
aarch64-cost-tables.h (thunderx_extra_costs): Increment Arith_shift and Arith_shift_reg by 1.

2017-06-21  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
        Increment Arith_shift and Arith_shift_reg by 1.
        * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
        New tuning flag.
        * config/aarch64/aarch64.c (thunderx_tunings): Enable
        AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
        (aarch64_strip_extend): Add new argument and test for it.
        (aarch64_cheap_mult_shift_p): New function.
        (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
        add a cost if it is true.
        Update calls to aarch64_strip_extend.
        (aarch64_rtx_costs): Update calls to aarch64_strip_extend.

From-SVN: r249459

7 years agoaarch64-cores.def (thunderxt88p1): Use thunderxt88 tunings.
Andrew Pinski [Wed, 21 Jun 2017 15:35:14 +0000 (15:35 +0000)]
aarch64-cores.def (thunderxt88p1): Use thunderxt88 tunings.

2017-06-21  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
        tunings.
        (thunderxt88): Likewise.
        * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
        (thunderx_prefetch_tune): New variable.
        (thunderx2t99_prefetch_tune): Update for the correct values.
        (thunderxt88_tunings): New variable.
        (thunderx_tunings): Use thunderx_prefetch_tune instead of
        generic_prefetch_tune.
        (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.

From-SVN: r249458

7 years ago[AArch64] Fix atomic_cmp_exchange_zero_reg_1.c with +lse
Kyrylo Tkachov [Wed, 21 Jun 2017 15:26:21 +0000 (15:26 +0000)]
[AArch64] Fix atomic_cmp_exchange_zero_reg_1.c with +lse

* config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
(aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
(aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
(aarch64_atomic_cas<mode>, GPI): Likewise.

From-SVN: r249457

7 years ago* g++.dg/cpp0x/constexpr-cast.C: Adjust dg-error for ILP32.
Jakub Jelinek [Wed, 21 Jun 2017 14:55:40 +0000 (16:55 +0200)]
* g++.dg/cpp0x/constexpr-cast.C: Adjust dg-error for ILP32.

From-SVN: r249455

7 years agoUpdate baseline symbols for aarch64-none-linux-gnu
Ramana Radhakrishnan [Wed, 21 Jun 2017 14:38:56 +0000 (14:38 +0000)]
Update baseline symbols for aarch64-none-linux-gnu

       * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Regenerate

From-SVN: r249454

7 years agoSupport dg-add-options in profopt.exp
Tom de Vries [Wed, 21 Jun 2017 14:14:31 +0000 (14:14 +0000)]
Support dg-add-options in profopt.exp

2017-06-21  Tom de Vries  <tom@codesourcery.com>

* lib/profopt.exp (profopt-get-options): Support dg-add-options.

From-SVN: r249453

7 years agoFix warning in gcc.dg/tree-prof/comp-goto-1.c
Tom de Vries [Wed, 21 Jun 2017 14:14:16 +0000 (14:14 +0000)]
Fix warning in gcc.dg/tree-prof/comp-goto-1.c

2017-06-21  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/tree-prof/comp-goto-1.c: Fix 'return type defaults to int'
warning.

From-SVN: r249452

7 years agoRework cold and hot label attributes in predict.c.
Martin Liska [Wed, 21 Jun 2017 12:52:14 +0000 (14:52 +0200)]
Rework cold and hot label attributes in predict.c.

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

* gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
statements on cold and hot labels.
* predict.c (tree_estimate_probability_bb): Remove the
prediction from this place.
2017-06-21  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-ssa/attr-hotcold-2.c: Update scanned patterns.

From-SVN: r249451

7 years agoMake early return predictor more precise.
Martin Liska [Wed, 21 Jun 2017 12:51:46 +0000 (14:51 +0200)]
Make early return predictor more precise.

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

PR tree-optimization/79489
* gimplify.c (maybe_add_early_return_predict_stmt): New
function.
(gimplify_return_expr): Call the function.
* predict.c (tree_estimate_probability_bb): Remove handling
of early return.
* predict.def: Update comment about early return predictor.
* gimple-predict.h (is_gimple_predict): New function.
* predict.def: Change default value of early return to 66.
* tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
statements.
* passes.def: Put pass_strip_predict_hints to the beginning of
IPA passes.

From-SVN: r249450

7 years agoDWARF: make it possible to emit debug info for declarations only
Pierre-Marie de Rodat [Wed, 21 Jun 2017 11:24:51 +0000 (11:24 +0000)]
DWARF: make it possible to emit debug info for declarations only

The DWARF back-end used to systematically ignore file-scope function and
variable declarations.  While this is justified in language like C/C++,
where such declarations can appear in several translation units and thus
bloat uselessly the debug info, this behavior is counter-productive in
languages with a well-defined module system.  Specifically, it prevents
the description of imported entities, that belong to foreign languages,
making them unavailable from debuggers.

Take for instance:

    package C_Binding is
        function My_C_Function (I : Integer) return Integer;
        pragma Import (C, My_C_Function, "my_c_function");
    end C_Binding;

This makes available for Ada programs the C function "my_c_function"
under the following name: C_Binding.My_C_Function.  When GCC compiles
it, though, it is represented as a FUNCTION_DECL node with DECL_EXTERNAL
set and a null DECL_INITIAL, which used to be discarded unconditionally
in the DWARF back-end.

This patch moves such filter from the DWARF back-end to the relevant
callers: passes.c:rest_of_decl_compilation and
godump.c:go_early_global_decl. It also This patch also updates the Ada
front-end to call debug hooks for functions such as in the above
example, so that we do generate debugging information for them.

gcc/
* dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
FUNCTION_DECL declarations.
(dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
declarations.
(dwaf2out_decl): Likewise.
* godump.c (go_early_global_decl): Skip call to the real debug hook
for FUNCTION_DECL declarations.
* passes.c (rest_of_decl_compilation): Skip call to the
early_global_decl debug hook for FUNCTION_DECL declarations, unless
-fdump-go-spec is passed.

gcc/ada/
* gcc-interface/ada-tree.h (DECL_FUNCTION_IS_DEF): Update copyright
notice.  New macro.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Tag the subprogram
as a definition.
(Compilation_Unit_to_gnu): Tag the elaboration procedure as a
definition.
* gcc-interface/decl.c (gnat_to_gnu_entity): Tag declarations of
imported subprograms for the current compilation unit as
definitions.  Disable debug info for references to variables.
* gcc-interface/gigi.h (create_subprog_decl): Update declaration.
* gcc-interface/utils.c (gnat_pushdecl): Add external DECLs that are
not built-in functions to their binding scope.
(create_subprog_decl): Add a DEFINITION parameter.  If it is true, tag
the function as a definition.  Update all callers.
(gnat_write_global_declarations): Emit debug info for imported
functions.  Filter out external variables for which debug info
is disabled.

gcc/testsuite/
* gnat.dg/debug11_pkg.adb, gnat.dg/debug11_pkg.ads,
gnat.dg/debug11_pkg2.ads: New testcase.

From-SVN: r249449

7 years ago[i386] __builtin_ia32_stmxcsr could be pure
Marc Glisse [Wed, 21 Jun 2017 11:20:41 +0000 (13:20 +0200)]
[i386] __builtin_ia32_stmxcsr could be pure

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

gcc/
* config/i386/i386.c (struct builtin_isa): New field pure_p.
Reorder for compactness.
(def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
(def_builtin_pure, def_builtin_pure2): New functions.
(ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.

gcc/testsuite/
* gcc.target/i386/getround.c: New file.

From-SVN: r249448

7 years agoNOP conversions in X+CST+CST
Marc Glisse [Wed, 21 Jun 2017 11:16:27 +0000 (13:16 +0200)]
NOP conversions in X+CST+CST

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

gcc/
* match.pd (nop_convert): New predicate.
((A +- CST1) +- CST2): Allow some NOP conversions.

gcc/testsuite/
* gcc.dg/tree-ssa/addadd.c: Un-XFAIL.
* gcc.dg/tree-ssa/addadd-2.c: New file.

From-SVN: r249447

7 years agoline-map.c (location_adhoc_data_update): Perform addition in uintptr_t type rather...
Jakub Jelinek [Wed, 21 Jun 2017 10:59:12 +0000 (12:59 +0200)]
line-map.c (location_adhoc_data_update): Perform addition in uintptr_t type rather than char * type.

* line-map.c (location_adhoc_data_update): Perform addition in
uintptr_t type rather than char * type.  Read *data using
ptrdiff_t type instead of int64_t.
(get_combined_adhoc_loc): Change offset type to ptrdiff_t from
int64_t.

From-SVN: r249446

7 years agore PR c++/81130 (ICE OpenMP shared clause in gimplify_var_or_parm_decl, at gimplify...
Jakub Jelinek [Wed, 21 Jun 2017 10:58:00 +0000 (12:58 +0200)]
re PR c++/81130 (ICE OpenMP shared clause in gimplify_var_or_parm_decl, at gimplify.c:2584)

PR c++/81130
* gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
with ctors/dtors if GOVD_SHARED is set.

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

From-SVN: r249445

7 years agoEmit SIMD moves as mov
Wilco Dijkstra [Wed, 21 Jun 2017 10:48:51 +0000 (10:48 +0000)]
Emit SIMD moves as mov

SIMD moves are currently emitted as ORR.  Change this to use the MOV
pseudo instruction just like integer moves (the ARM-ARM states MOV is the
preferred disassembly), improving readability of -S output.

    gcc/
* config/aarch64/aarch64.md (movti_aarch64):
Emit mov rather than orr.
(movtf_aarch64): Likewise.
* config/aarch64/aarch64-simd.md (aarch64_simd_mov):
Emit mov rather than orr.

From-SVN: r249444

7 years agoImprove dup pattern
Wilco Dijkstra [Wed, 21 Jun 2017 10:46:02 +0000 (10:46 +0000)]
Improve dup pattern

Improve the dup pattern to prefer vector registers.  When doing a dup
after a load, the register allocator thinks the costs are identical
and chooses an integer load.  However a dup from an integer register
includes an int->fp transfer which is not modelled.  Adding a '?' to
the integer variant means the cost is increased slightly so we prefer
using a vector register.  This improves the following example:

#include <arm_neon.h>
void f(unsigned *a, uint32x4_t *b)
{
  b[0] = vdupq_n_u32(a[1]);
  b[1] = vdupq_n_u32(a[2]);
}

to:
        ldr     s0, [x0, 4]
        dup     v0.4s, v0.s[0]
        str     q0, [x1]
        ldr     s0, [x0, 8]
        dup     v0.4s, v0.s[0]
        str     q0, [x1, 16]
        ret

    gcc/
* config/aarch64/aarch64-simd.md (aarch64_simd_dup):
Swap alternatives, make integer dup more expensive.

From-SVN: r249443

7 years agoMark symbols as constant
Wilco Dijkstra [Wed, 21 Jun 2017 10:40:21 +0000 (10:40 +0000)]
Mark symbols as constant

Aarch64_legitimate_constant_p currently returns false for symbols,
eventhough they are always valid constants.  This means LOSYM isn't
CSEd correctly.  If we return true CSE works better, resulting in
smaller/faster code (0.3% smaller code on SPEC2006).  Avoid this
for TLS symbols since their sequence is complex.

    gcc/
* config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
Return true for non-tls symbols.

From-SVN: r249442

7 years ago[Patch AArch64] Add initial tuning support for Cortex-A55 and Cortex-A75
James Greenhalgh [Wed, 21 Jun 2017 09:58:57 +0000 (09:58 +0000)]
[Patch AArch64] Add initial tuning support for Cortex-A55 and Cortex-A75

This patch adds support for the ARM Cortex-A75 and
Cortex-A55 processors through the -mcpu/-mtune values cortex-a55 and
cortex-a75, and an ARM DynamIQ big.LITTLE configuration of these two
processors through the -mcpu/-mtune value cortex-a75.cortex-a55

The ARM Cortex-A75 is ARM's latest and highest performance applications
processor. For the initial tuning provided in this patch, I have chosen to
share the tuning structure with its predecessor, the Cortex-A73.

The ARM Cortex-A55 delivers the best combination of power efficiency
and performance in its class. For the initial tuning provided in this patch,
I have chosen to share the tuning structure with its predecessor, the
Cortex-A53.

Both Cortex-A55 and Cortex-A75 support ARMv8-A with the ARM8.1-A and
ARMv8.2-A extensions, along with the cryptography extension, and
the RCPC extensions from ARMv8.3-A. This is reflected in the patch,
-mcpu=cortex-a75 is treated as equivalent to passing -mtune=cortex-a75
-march=armv8.2-a+rcpc .

2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>

* config/aarch64/aarch64-cores.def (cortex-a55): New.
(cortex-a75): Likewise.
(cortex-a75.cortex-a55): Likewise.
* config/aarch64/aarch64-tune.md: Regenerate.
* doc/invoke.texi (-mtune): Document new values for -mtune.

From-SVN: r249441

7 years agoAdd dg-add-options feature stack_size
Tom de Vries [Wed, 21 Jun 2017 09:10:16 +0000 (09:10 +0000)]
Add dg-add-options feature stack_size

2017-06-21  Tom de Vries  <tom@codesourcery.com>

* doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
stack_size feature.
(Effective-Target Keywords, Other attributes): Suggest using
dg-add-options stack_size feature to get stack limit in stack_size
effective target documentation.

* lib/target-supports.exp (add_options_for_stack_size): New proc.
* gcc.c-torture/execute/920501-7.c: Use dg-add-options stack_size.
* gcc.c-torture/compile/20080806-1.c: Same.
* gcc.c-torture/compile/920723-1.c: Same.
* gcc.c-torture/compile/930621-1.c: Same.
* gcc.c-torture/compile/991214-2.c: Same.
* gcc.c-torture/compile/bcopy.c: Same.
* gcc.c-torture/compile/memtst.c: Same.
* gcc.c-torture/compile/msp.c: Same.
* gcc.c-torture/compile/stuct.c: Same.
* gcc.c-torture/execute/20011008-3.c: Same.
* gcc.c-torture/execute/20030209-1.c: Same.
* gcc.c-torture/execute/20031012-1.c: Same.
* gcc.c-torture/execute/20040805-1.c: Same.
* gcc.c-torture/execute/920410-1.c: Same.
* gcc.c-torture/execute/921113-1.c: Same.
* gcc.c-torture/execute/921202-1.c: Same.
* gcc.c-torture/execute/921208-2.c: Same.
* gcc.c-torture/execute/930106-1.c: Same.
* gcc.c-torture/execute/930406-1.c: Same.
* gcc.c-torture/execute/950221-1.c: Same.
* gcc.c-torture/execute/960521-1.c: Same.
* gcc.c-torture/execute/980605-1.c: Same.
* gcc.c-torture/execute/comp-goto-1.c: Same.
* gcc.c-torture/execute/comp-goto-2.c: Same.
* gcc.c-torture/execute/memcpy-1.c: Same.
* gcc.c-torture/execute/multi-ix.c: Same.
* gcc.c-torture/execute/nestfunc-4.c: Same.
* gcc.c-torture/execute/pr20621-1.c: Same.
* gcc.c-torture/execute/pr23135.c: Same.
* gcc.c-torture/execute/pr28982b.c: Same.
* gcc.dg/loop-3.c: Same.
* gcc.dg/struct-ret-3.c: Same.
* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
* gcc.dg/tree-prof/comp-goto-1.c: Same.
* gcc.dg/tree-prof/pr44777.c: Same.

From-SVN: r249440

7 years agoPR libstdc++/81092 Regenerate configure for libtool_VERSION change
Jonathan Wakely [Wed, 21 Jun 2017 08:55:26 +0000 (09:55 +0100)]
PR libstdc++/81092 Regenerate configure for libtool_VERSION change

PR libstdc++/81092
* configure: Regenerate.

From-SVN: r249438

7 years agoconfigure.ac: Add AC_SYS_LARGEFILE.
Richard Biener [Wed, 21 Jun 2017 07:04:13 +0000 (07:04 +0000)]
configure.ac: Add AC_SYS_LARGEFILE.

2017-06-21  Richard Biener  <rguenther@suse.de>

* configure.ac: Add AC_SYS_LARGEFILE.
* config.h.in: Regenerate.
* configure: Likewise.

From-SVN: r249436

7 years agore PR gcov-profile/81080 (target libgcov not built with large file support)
Richard Biener [Wed, 21 Jun 2017 07:01:34 +0000 (07:01 +0000)]
re PR gcov-profile/81080 (target libgcov not built with large file support)

2017-06-21  Richard Biener  <rguenther@suse.de>

PR gcov-profile/81080
* configure.ac: Add AC_SYS_LARGEFILE.
* libgcov.h: Include auto-target.h before tsystem.h to pick
up _FILE_OFFSET_BITS which might differ for multilibs.
* config.in: Regenerate.
* configure: Likewise.

From-SVN: r249435

7 years agoUpdate the ChangeLog to include config/arm/cortex-a53.md
Naveen H.S [Wed, 21 Jun 2017 05:47:24 +0000 (05:47 +0000)]
Update the ChangeLog to include config/arm/cortex-a53.md
and config/arm/exynos-m1.md modifications

From-SVN: r249434

7 years ago* config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
Julian Brown [Wed, 21 Jun 2017 05:36:03 +0000 (05:36 +0000)]
* config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
(aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
* config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
reservation.
* config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
attribute type list for neon_multiply.
* config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
* config/arm/types.md (crypto_pmull): Add.
* config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
attribute type list.

Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
From-SVN: r249433

7 years agoDaily bump.
GCC Administrator [Wed, 21 Jun 2017 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r249432

7 years agoconfig.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to arm1176jzf-s.
Andreas Tobler [Tue, 20 Jun 2017 21:28:15 +0000 (23:28 +0200)]
config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to arm1176jzf-s.

2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>

    * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
    arm1176jzf-s.

From-SVN: r249428

7 years agoFix -Werror=class-memaccess failures in jit testsuite (PR jit/81144)
David Malcolm [Tue, 20 Jun 2017 20:37:28 +0000 (20:37 +0000)]
Fix -Werror=class-memaccess failures in jit testsuite (PR jit/81144)

gcc/testsuite/ChangeLog:
PR jit/81144
* jit.dg/test-operator-overloading.cc (make_test_quadratic): Replace
memset call with zero-initialization.
* jit.dg/test-quadratic.cc (make_test_quadratic): Likewise.

From-SVN: r249427

7 years agoira-costs.c (find_costs_and_classes): Initialize cost_classes later to make sure...
Jakub Jelinek [Tue, 20 Jun 2017 19:43:29 +0000 (21:43 +0200)]
ira-costs.c (find_costs_and_classes): Initialize cost_classes later to make sure not to dereference a NULL...

* ira-costs.c (find_costs_and_classes): Initialize cost_classes later
to make sure not to dereference a NULL cost_classes_ptr pointer.

From-SVN: r249426

7 years agopr80732.c: Include fma4-check.h.
Uros Bizjak [Tue, 20 Jun 2017 19:04:07 +0000 (21:04 +0200)]
pr80732.c: Include fma4-check.h.

* gcc.target/i386/pr80732.c: Include fma4-check.h.
(main): Renamed to ...
(fma4_test): ... this.

From-SVN: r249425

7 years agors6000-c.c (altivec_overloaded_builtins): Add ALTIVEC_BUILTIN_VMULESW...
Carl Love [Tue, 20 Jun 2017 18:27:48 +0000 (18:27 +0000)]
rs6000-c.c (altivec_overloaded_builtins): Add ALTIVEC_BUILTIN_VMULESW...

gcc/ChangeLog:

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

* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
VMULOSW): New enum "unspec" values.
(vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
altivec_vmulosw): New patterns.
* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
VMULOSW): Add definitions.

From-SVN: r249424

7 years agoFix rounding pattern similar to PR73350.
Julia Koval [Tue, 20 Jun 2017 18:20:51 +0000 (20:20 +0200)]
Fix rounding pattern similar to PR73350.

gcc/
* config/i386/i386.c: Fix rounding expand for new pattern.
* config/i386/subst.md: Fix pattern (parallel -> unspec).
gcc/testsuite/
* gcc.target/i386/pr73350-2.c: New test.

From-SVN: r249423

7 years agoSupport multi-tool sum files in dg-cmp-results.sh
Thomas Preud'homme [Tue, 20 Jun 2017 16:52:53 +0000 (16:52 +0000)]
Support multi-tool sum files in dg-cmp-results.sh

2017-06-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    contrib/
    * dg-cmp-results.sh: Keep test result lines rather than throwing
    header and summary to support sum files with multiple tools.

From-SVN: r249422