summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* libgo: add platform support for SuperHian2018-01-1012-15/+79
| | | | | | | Reviewed-on: https://go-review.googlesource.com/84555 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256446 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-10 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>acsawdey2018-01-102-18/+25
| | | | | | | | | * gcc.dg/memcmp-1.c: Reduce runtime to something reasonable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256443 138bc75d-0d04-0410-961f-82ee72b054a4
* Add missing .a files. These should have been committed with theian2018-01-105-0/+0
| | | | | | | | update to go1.10beta1, but were skipped because by default Subversion ignores all files matching *.a. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256442 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/82541mpolacek2018-01-105-0/+30
| | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256441 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/81327jakub2018-01-104-33/+55
| | | | | | | | | | | | | | | | | | | * 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 *. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256440 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-10 François Dumont <fdumont@gcc.gnu.org>fdumont2018-01-104-382/+492
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256439 138bc75d-0d04-0410-961f-82ee72b054a4
* /cppaolo2018-01-104-1/+18
| | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256438 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c/82922ian2018-01-106-12/+8
| | | | | | | | | | | runtime, syscall: use full prototypes in C code Based on patch by Martin Sebor. Reviewed-on: https://go-review.googlesource.com/86815 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256437 138bc75d-0d04-0410-961f-82ee72b054a4
* i386: Also adjust stack frame for stack slot alignmenthjl2018-01-105-47/+148
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256436 138bc75d-0d04-0410-961f-82ee72b054a4
* exp: remove exp/proxy and exp/terminal packagesian2018-01-1013-1392/+31
| | | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256435 138bc75d-0d04-0410-961f-82ee72b054a4
* [ARM] Add -mbranch-cost option, and update a few testsclyon2018-01-1022-17/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256434 138bc75d-0d04-0410-961f-82ee72b054a4
* cmd/go: check for another GCC error messageian2018-01-102-2/+4
| | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256433 138bc75d-0d04-0410-961f-82ee72b054a4
* rs6000: Wrap diff of immediates in const (PR83629)segher2018-01-104-10/+36
| | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256432 138bc75d-0d04-0410-961f-82ee72b054a4
* runtime: fix makemap calls in __go_construct_mapian2018-01-102-4/+4
| | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256431 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-10 Richard Biener <rguenther@suse.de>rguenth2018-01-102-1/+6
| | | | | | | | PR testsuite/78768 * gcc.dg/pr78768.c: Un-XFAIL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256430 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-10 Richard Biener <rguenther@suse.de>rguenth2018-01-102-1/+5
| | | | | | | | PR debug/82425 * gcc.dg/guality/inline-params-2.c: Un-XFAIL for slim LTO. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256429 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-10 Richard Biener <rguenther@suse.de>rguenth2018-01-102-5/+12
| | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256428 138bc75d-0d04-0410-961f-82ee72b054a4
* Don't use permutes for single-element accesses (PR83753)rsandifo2018-01-104-4/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256427 138bc75d-0d04-0410-961f-82ee72b054a4
* PR 83740 Wrong string length type in bounds checkjb2018-01-102-5/+10
| | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256426 138bc75d-0d04-0410-961f-82ee72b054a4
* PR 84740 Wrong string length type in bounds checkjb2018-01-102-2/+11
| | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256425 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/81616hubicka2018-01-104-1/+14
| | | | | | | | | * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER. * i386.h (TARGET_USE_GATHER): Define. * x86-tune.def (X86_TUNE_USE_GATHER): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256424 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.target/i386/avx2-gather-1.c: Add -march.hubicka2018-01-1018-16/+65
| | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256423 138bc75d-0d04-0410-961f-82ee72b054a4
* Clean up partitioning in try_optimize_cfg (PR bootstrap/82831).marxin2018-01-104-2/+13
| | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256422 138bc75d-0d04-0410-961f-82ee72b054a4
* Mostly revert r254296rsandifo2018-01-106-66/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256421 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/83575hubicka2018-01-102-5/+20
| | | | | | | | * predict.c (force_edge_cold): Handle in more sane way edges with no prediction. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256420 138bc75d-0d04-0410-961f-82ee72b054a4
* runtime: work around escaping closure in export_test.goian2018-01-102-8/+8
| | | | | | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256419 138bc75d-0d04-0410-961f-82ee72b054a4
* runtime: noescape some functions/variablesian2018-01-106-11/+29
| | | | | | | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256418 138bc75d-0d04-0410-961f-82ee72b054a4
* cmd/go: add AIX supportian2018-01-102-7/+25
| | | | | | | | | | For gccgo code avoid --whole-archive and -(. Use -blibpath instead of -rpath. Reviewed-on: https://go-review.googlesource.com/86956 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256417 138bc75d-0d04-0410-961f-82ee72b054a4
* libgo: add aix build tagsian2018-01-105-5/+5
| | | | | | | Reviewed-on: https://go-review.googlesource.com/86936 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256416 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2018-01-101-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256415 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: use temporary variable for stack allocationian2018-01-092-4/+15
| | | | | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256412 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: set captured variable address to nonescape until further floodedian2018-01-092-4/+2
| | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256411 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: stack allocate defer thunkian2018-01-093-2/+11
| | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256410 138bc75d-0d04-0410-961f-82ee72b054a4
* * es.po: Update.jsm282018-01-092-96/+72
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256408 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: make non-escaping Bound_method_expression not heap allocateian2018-01-092-2/+7
| | | | | | | | | | Bound_method_expression needs a closure. Stack allocate the closure when it does not escape. Reviewed-on: https://go-review.googlesource.com/85638 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256407 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: move some escape check to Mark_address_takenian2018-01-094-13/+30
| | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256406 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: support go:noescape cross packageian2018-01-094-9/+46
| | | | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256405 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: stack allocate non-escaping makesliceian2018-01-093-14/+61
| | | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256404 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: delay escaping sliced arraysian2018-01-093-14/+24
| | | | | | | | | | | | 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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256403 138bc75d-0d04-0410-961f-82ee72b054a4
* i386: Add a test for PR target/78585hjl2018-01-092-0/+34
| | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256402 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libstdc++/80276 fix pretty printers for array smart pointersredi2018-01-094-3/+42
| | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256400 138bc75d-0d04-0410-961f-82ee72b054a4
* os/signal/internal/pty: build on Solarisian2018-01-092-2/+2
| | | | | | | | | Patch from Rainer Orth. Reviewed-on: https://go-review.googlesource.com/87037 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256399 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: make top-level decl for address-taken non-escaping localsian2018-01-096-16/+79
| | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256398 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/83734jakub2018-01-094-8/+19
| | | | | | | | | | * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs in STATEMENT_LIST. Remove unneeded assert. * g++.dg/cpp0x/pr83734.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256397 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-09 François Dumont <fdumont@gcc.gnu.org>fdumont2018-01-095-21/+164
| | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256396 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/ChangeLog:carll2018-01-0911-14/+453
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256395 138bc75d-0d04-0410-961f-82ee72b054a4
* compiler: add escape analysis debug hashian2018-01-098-0/+106
| | | | | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256393 138bc75d-0d04-0410-961f-82ee72b054a4
* Part of the fix for pr82190 got undone by my newer memcmp checkin.acsawdey2018-01-091-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256392 138bc75d-0d04-0410-961f-82ee72b054a4
* 2018-01-09 Steven G. Kargl <kargl@gcc.gnu.org>kargl2018-01-094-8/+25
| | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256391 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libstdc++/59253 Improve pretty printers for smart pointersredi2018-01-094-21/+54
| | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256390 138bc75d-0d04-0410-961f-82ee72b054a4