- 10 Jan, 2018 19 commits
-
-
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
Ian Lance Taylor committed -
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
Segher Boessenkool committed -
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
Ian Lance Taylor committed -
2018-01-10 Richard Biener <rguenther@suse.de> PR testsuite/78768 * gcc.dg/pr78768.c: Un-XFAIL. From-SVN: r256430
Richard Biener committed -
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
Richard Biener committed -
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
Richard Biener committed -
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
Richard Sandiford committed -
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
Janne Blomqvist committed -
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
Janne Blomqvist committed -
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
Jan Hubicka committed -
* 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
Jan Hubicka committed -
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
Martin Liska committed -
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
Richard Sandiford committed -
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
Jan Hubicka committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
For gccgo code avoid --whole-archive and -(. Use -blibpath instead of -rpath. Reviewed-on: https://go-review.googlesource.com/86956 From-SVN: r256417
Ian Lance Taylor committed -
Reviewed-on: https://go-review.googlesource.com/86936 From-SVN: r256416
Ian Lance Taylor committed -
From-SVN: r256415
GCC Administrator committed
-
- 09 Jan, 2018 21 commits
-
-
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
From-SVN: r256408
Joseph Myers committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
Ian Lance Taylor committed -
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
H.J. Lu committed -
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
Jonathan Wakely committed -
Patch from Rainer Orth. Reviewed-on: https://go-review.googlesource.com/87037 From-SVN: r256399
Ian Lance Taylor committed -
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
Cherry Zhang committed -
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
Jakub Jelinek committed -
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
François Dumont committed -
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
Carl Love committed -
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
Cherry Zhang committed -
From-SVN: r256392
Aaron Sawdey committed -
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
Steven G. Kargl committed -
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
Juraj Oršulić committed -
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
Ian Lance Taylor committed
-