aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-05-30gcc/config/i386/mingw32.h: Ensure `-lmsvcrt` precede `-lkernel32`Jonathan Yong1-1/+1
This is necessary as libmsvcrt.a is not a pure import library, but also contains some functions that invoke others in KERNEL32.DLL. gcc/ * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Insert -lkernel32 after -lmsvcrt. This is necessary as libmsvcrt.a is not a pure import library, but also contains some functions that invoke others in KERNEL32.DLL. Signed-off-by: Liu Hao <lh_mouse@126.com> Signed-off-by: Jonathan Yong <10walls@gmail.com>
2020-05-29c++: satisfaction value of type typedef to bool [PR95386]Patrick Palka2-7/+18
In the testcase below, the satisfaction value of fn1<int>'s constraint is INTEGER_CST '1' of type BOOLEAN_TYPE value_type, which is a typedef to the standard boolean_type_node. But satisfaction_value expects to see exactly boolean_true_node or integer_one_node, which this value is neither, causing us to trip over the assert therein. This patch changes satisfaction_value to accept INTEGER_CST of any boolean type. gcc/cp/ChangeLog: PR c++/95386 * constraint.cc (satisfaction_value): Accept INTEGER_CST of any boolean type. gcc/testsuite/ChangeLog: PR c++/95386 * g++.dg/concepts/pr95386.C: New test.
2020-05-30Daily bump.GCC Administrator5-1/+300
2020-05-29rs6000: Prefer VSX insns over VMX ones (part 1: perm and mrg)Segher Boessenkool2-53/+53
There are various VSX insns that do the same job as (older) AltiVec insns, just with a wider range of possible registers. Many patterns for such insns have the "v" alternative before the "wa" alternative, which makes the output less readable than possible (since vs32 is v0, and most insns before or after this insn will be VSX as well). This changes the define_insns for the mrg and perm machine instructions to prefer the VSX form. No behaviour change. Only one testcase needed a little adjustment as well. 2020-05-29 Segher Boessenkool <segher@kernel.crashing.org> * config/rs6000/altivec.md (altivec_vmrghw_direct): Prefer VSX form. (altivec_vmrglw_direct): Ditto. (altivec_vperm_<mode>_direct): Ditto. (altivec_vperm_v8hiv16qi): Ditto. (*altivec_vperm_<mode>_uns_internal): Ditto. (*altivec_vpermr_<mode>_internal): Ditto. (vperm_v8hiv4si): Ditto. (vperm_v16qiv8hi): Ditto. gcc/testsuite/ * gcc.target/powerpc/vsx-vector-6.p9.c: Allow xxperm as perm as well.
2020-05-29c++: P0848R3 and member function templates [PR95181]Patrick Palka3-4/+28
When comparing two special member function templates to see if one hides the other (as per P0848R3), we need to check satisfaction which we can't do on templates. So this patch makes add_method skip the eligibility test on member function templates and just lets them coexist. gcc/cp/ChangeLog: PR c++/95181 * class.c (add_method): Let special member function templates coexist if they are not equivalently constrained, or in a class template. gcc/testsuite/ChangeLog: PR c++/95181 * g++.dg/concepts/pr95181.C: New test. * g++.dg/concepts/pr95181-2.C: New test. Co-authored-by: Jason Merrill <jason@redhat.com>
2020-05-29c++: Template template parameter in constraint [PR95371]Jason Merrill2-1/+26
any_template_parm_r was assuming that the DECL_TEMPLATE_RESULT of a template will have a suitable TEMPLATE_INFO from which we can look at the generic arguments for that template. But that wasn't true for a template template parameter; this patch makes it so. gcc/cp/ChangeLog: PR c++/95371 * pt.c (process_template_parm): Set DECL_TEMPLATE_INFO on the DECL_TEMPLATE_RESULT. gcc/testsuite/ChangeLog: PR c++/95371 * g++.dg/cpp2a/concepts-ttp1.C: New test.
2020-05-29Simplify tree streaming.Jan Hubicka6-165/+256
this patch cleans up tree streaming. The code is prepared to stream nested trees, but we only handle flat trees. As a result we have quite heavy function to stream in/out tree reference which is used many times and shows up in profile. This patch adds stream_write_tree_ref/stream_read_tree_ref which is used to stream references to trees that are required to exist in the cache or be indexable. The actual implementation is just a first cut. I would like to make it more compact. We used to stream 2 byte tag (as UHWI) + UHWI representing the index. Now we stream one UHWI that represent type of reference + index for references to cache, but still two integers for references to global stream. This is becaue the abstraction is not very helpful here and I want to clean this up incrementally. I would also like to get rid of the ref_p parameters which seems unnecessary for flat streams. This reduces around 7% of global stream, 3% when compressed. More reduction will happen once the format is sanitized a bit. from [WPA] read 4597161 unshared trees [WPA] read 2937414 mergeable SCCs of average size 1.364280 [WPA] 8604617 tree bodies read in total [WPA] tree SCC table: size 524287, 247507 elements, collision ratio: 0.377468 [WPA] tree SCC max chain length 2 (size 1) [WPA] Compared 2689907 SCCs, 184 collisions (0.000068) [WPA] Merged 2689890 SCCs [WPA] Merged 3722677 tree bodies [WPA] Merged 632040 types ... [WPA] Compression: 88124141 input bytes, 234906430 uncompressed bytes (ratio: 2.665631) [WPA] Size of mmap'd section decls: 88124141 bytes ... [WPA] Compression: 113758813 input bytes, 316149514 uncompressed bytes (ratio: 2.779121) [WPA] Size of mmap'd section decls: 88124141 bytes [WPA] Size of mmap'd section function_body: 14485721 bytes to [WPA] read 4597174 unshared trees [WPA] read 2937413 mergeable SCCs of average size 1.364280 [WPA] 8604629 tree bodies read in total [WPA] tree SCC table: size 524287, 247509 elements, collision ratio: 0.377458 [WPA] tree SCC max chain length 2 (size 1) [WPA] Compared 2689904 SCCs, 183 collisions (0.000068) [WPA] Merged 2689888 SCCs [WPA] Merged 3722675 tree bodies [WPA] Merged 632041 types .... [WPA] Size of mmap'd section decls: 86177293 bytes [WPA] Compression: 86177293 input bytes, 217625095 uncompressed bytes (ratio: 2.525318) .... [WPA] Compression: 111682269 input bytes, 297228756 uncompressed bytes (ratio: 2.661378) [WPA] Size of mmap'd section decls: 86177293 bytes [WPA] Size of mmap'd section function_body: 14349032 bytes gcc/ChangeLog: * lto-streamer-in.c (streamer_read_chain): Move here from tree-streamer-in.c. (stream_read_tree_ref): New. (lto_input_tree_1): Simplify. * lto-streamer-out.c (stream_write_tree_ref): New. (lto_write_tree_1): Simplify. (lto_output_tree_1): Simplify. (DFS::DFS_write_tree): Simplify. (streamer_write_chain): Move here from tree-stremaer-out.c. * lto-streamer.h (lto_output_tree_ref): Update prototype. (stream_read_tree_ref): Declare (stream_write_tree_ref): Declare * tree-streamer-in.c (streamer_read_chain): Update to use stream_read_tree_ref. (lto_input_ts_common_tree_pointers): Likewise. (lto_input_ts_vector_tree_pointers): Likewise. (lto_input_ts_poly_tree_pointers): Likewise. (lto_input_ts_complex_tree_pointers): Likewise. (lto_input_ts_decl_minimal_tree_pointers): Likewise. (lto_input_ts_decl_common_tree_pointers): Likewise. (lto_input_ts_decl_with_vis_tree_pointers): Likewise. (lto_input_ts_field_decl_tree_pointers): Likewise. (lto_input_ts_function_decl_tree_pointers): Likewise. (lto_input_ts_type_common_tree_pointers): Likewise. (lto_input_ts_type_non_common_tree_pointers): Likewise. (lto_input_ts_list_tree_pointers): Likewise. (lto_input_ts_vec_tree_pointers): Likewise. (lto_input_ts_exp_tree_pointers): Likewise. (lto_input_ts_block_tree_pointers): Likewise. (lto_input_ts_binfo_tree_pointers): Likewise. (lto_input_ts_constructor_tree_pointers): Likewise. (lto_input_ts_omp_clause_tree_pointers): Likewise. * tree-streamer-out.c (streamer_write_chain): Update to use stream_write_tree_ref. (write_ts_common_tree_pointers): Likewise. (write_ts_vector_tree_pointers): Likewise. (write_ts_poly_tree_pointers): Likewise. (write_ts_complex_tree_pointers): Likewise. (write_ts_decl_minimal_tree_pointers): Likewise. (write_ts_decl_common_tree_pointers): Likewise. (write_ts_decl_non_common_tree_pointers): Likewise. (write_ts_decl_with_vis_tree_pointers): Likewise. (write_ts_field_decl_tree_pointers): Likewise. (write_ts_function_decl_tree_pointers): Likewise. (write_ts_type_common_tree_pointers): Likewise. (write_ts_type_non_common_tree_pointers): Likewise. (write_ts_list_tree_pointers): Likewise. (write_ts_vec_tree_pointers): Likewise. (write_ts_exp_tree_pointers): Likewise. (write_ts_block_tree_pointers): Likewise. (write_ts_binfo_tree_pointers): Likewise. (write_ts_constructor_tree_pointers): Likewise. (write_ts_omp_clause_tree_pointers): Likewise. (streamer_write_tree_body): Likewise. (streamer_write_integer_cst): Likewise. * tree-streamer.h (streamer_read_chain):Declare. (streamer_write_chain):Declare. (streamer_write_tree_body): Update prototype. (streamer_write_integer_cst): Update prototype.
2020-05-29Avoid nested save_CFLAGS and save_LDFLAGSH.J. Lu1-6/+6
Avoid nested save_CFLAGS and save_LDFLAGS by replacing save_CFLAGS and save_LDFLAGS with cet_save_CFLAGS and cet_save_LDFLAGS in cet.m4. config/ PR bootstrap/95413 * cet.m4: Replace save_CFLAGS and save_LDFLAGS with cet_save_CFLAGS and cet_save_LDFLAGS. gcc/ PR bootstrap/95413 * configure: Regenerated. libatomic/ PR bootstrap/95413 * configure: Regenerated. libbacktrace/ PR bootstrap/95413 * configure: Regenerated. libcc1/ PR bootstrap/95413 * configure: Regenerated. libcpp/ PR bootstrap/95413 * configure: Regenerated. libdecnumber/ PR bootstrap/95413 * configure: Regenerated. libgcc/ PR bootstrap/95413 * configure: Regenerated. libgfortran/ PR bootstrap/95413 * configure: Regenerated. libgomp/ PR bootstrap/95413 * configure: Regenerated. libiberty/ PR bootstrap/95413 * configure: Regenerated. libitm/ PR bootstrap/95413 * configure: Regenerated. libobjc/ PR bootstrap/95413 * configure: Regenerated. libphobos/ PR bootstrap/95413 * configure: Regenerated. libquadmath/ PR bootstrap/95413 * configure: Regenerated. libsanitizer/ PR bootstrap/95413 * configure: Regenerated. libssp/ PR bootstrap/95413 * configure: Regenerated. libstdc++-v3/ PR bootstrap/95413 * configure: Regenerated. libvtv/ PR bootstrap/95413 * configure: Regenerated. lto-plugin/ PR bootstrap/95413 * configure: Regenerated. zlib/ PR bootstrap/95413 * configure: Regenerated.
2020-05-29PR fortran/95090 - ICE: identifier overflowHarald Anlauf1-4/+7
The initial fix for this PR uncovered several latent issues with further too small string buffers which showed up only when testing on i686. Provide sufficiently large temporaries. 2020-05-29 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95090 * class.c (get_unique_type_string): Enlarge temporary for name-mangling. Use strncpy to prevent buffer overrun. (get_unique_hashed_string): Enlarge temporary. (gfc_hash_value): Enlarge temporary for name-mangling.
2020-05-29libgfortran: Export forgotten _gfortran_{,m,s}findloc{0,1}_c10 [PR95390]Jakub Jelinek1-0/+29
I have noticed we don't export these 6 symbols and thus the testcase below fails to link. 2020-05-29 Jakub Jelinek <jakub@redhat.com> PR libfortran/95390 * gfortran.dg/findloc_8.f90: New test. * Makefile.am (i_findloc0_c): Add findloc0_i10.c. (i_findloc1_c): Add findloc1_i10.c. * gfortran.map (GFORTRAN_10.2): New symbol version, export _gfortran_{,m,s}findloc{0,1}_c10 symbols. * Makefile.in: Regenerated. * generated/findloc0_c10.c: Generated. * generated/findloc1_c10.c: Generated.
2020-05-29c++: Fix bogus -Wparentheses warning [PR95344]Marek Polacek2-2/+24
Since r267272, which added location wrappers, cp_fold loses TREE_NO_WARNING on a MODIFY_EXPR that finish_parenthesized_expr set, and that results in a bogus -Wparentheses warning. I.e., previously we had "b = 1" but now we have "VIEW_CONVERT_EXPR<bool>(b) = 1" and cp_fold_maybe_rvalue folds away the location wrapper and so we do 2718 x = fold_build2_loc (loc, code, TREE_TYPE (x), op0, op1); in cp_fold and the flag is lost. PR c++/95344 * cp-gimplify.c (cp_fold) <case MODIFY_EXPR>: Don't set TREE_THIS_VOLATILE here. (cp_fold): Set it here along with TREE_NO_WARNING. * c-c++-common/Wparentheses-2.c: New test.
2020-05-29c++: vptr ubsan and derived class [PR95311].Jason Merrill2-2/+20
We weren't able to find OBJ_TYPE_REF_OBJECT walking through OBJ_TYPE_REF_EXPR because we had folded away the ADDR_EXPR. gcc/cp/ChangeLog: PR c++/95311 PR c++/95221 * class.c (build_vfn_ref): Don't fold the INDIRECT_REF. gcc/testsuite/ChangeLog: PR c++/95311 * g++.dg/ubsan/vptr-16.C: New test.
2020-05-29c++: lambdas inside constraints [PR92652]Patrick Palka4-6/+44
When parsing a constraint-expression, a requires-clause or a requires-expression, we temporarily increment processing_template_decl so that we always obtain template trees which we could later reduce via substitution even when not inside a template. But incrementing processing_template_decl when we're already inside a template has the unintended side effect of shifting up the template parameter levels of a lambda defined inside one of these constructs, which leads to confusion later during substitution into the lambda. This patch fixes this issue by incrementing processing_template_decl during parsing of these constructs only if it is 0. Passes 'make check-c++', and also tested by building cmcstl2, does this look OK to commit after a full bootstrap/regtest? gcc/cp/ChangeLog: PR c++/92652 PR c++/93698 PR c++/94128 * parser.c (cp_parser_requires_clause_expression): Temporarily increment processing_template_decl only if it is 0. (cp_parser_constraint_expression): Likewise. (cp_parser_requires_expression): Likewise. gcc/testsuite/ChangeLog: PR c++/92652 PR c++/93698 PR c++/94128 * g++.dg/cpp2a/concepts-lambda8.C: New test. * g++.dg/cpp2a/concepts-lambda9.C: New test. * g++.dg/cpp2a/concepts-lambda10.C: New test.
2020-05-29c++: constexpr ctor with RANGE_EXPR index [PR95241]Patrick Palka2-0/+37
In the testcase below, the CONSTRUCTOR for 'field' contains a RANGE_EXPR index: {{aggr_init_expr<...>, [1...2]={.off=1}}} but get_or_insert_ctor_field isn't prepared to handle looking up a RANGE_EXPR index. This patch adds limited support to get_or_insert_ctor_field for looking up a RANGE_EXPR index. The limited scope of this patch should make it more suitable for backporting, and more extensive support would be needed only to handle self-modifying CONSTRUCTORs that contain a RANGE_EXPR index, but I haven't yet been able to come up with a testcase that actually creates such a CONSTRUCTOR. gcc/cp/ChangeLog: PR c++/95241 * constexpr.c (get_or_insert_ctor_field): Add limited support for RANGE_EXPR index lookups. gcc/testsuite/ChangeLog: PR c++/95241 * g++.dg/cpp0x/constexpr-array25.C: New test.
2020-05-29amdgcn: Fix VCC early clobberAndrew Stubbs1-16/+16
gcc/ChangeLog: 2020-05-28 Andrew Stubbs <ams@codesourcery.com> * config/gcn/gcn-valu.md (add<mode>3_vcc_zext_dup): Add early clobber. (add<mode>3_vcc_zext_dup_exec): Likewise. (add<mode>3_vcc_zext_dup2): Likewise. (add<mode>3_vcc_zext_dup2_exec): Likewise.
2020-05-29tree-optimization/95272 - add SLP_TREE_REPRESENTATIVERichard Biener4-12/+33
This adds SLP_TREE_REPRESENTATIVE - a representative stmt-info that is used by SLP analysis and code generation. This avoids the need for the hack in vect_slp_rearrange_stmts which previously avoided to re-arrange stmts that might not have been isomorphic because of operand swapping. It also plays nice with future directions of SLP and for the forseeable future is easier than replicating more and more info in the SLP node as long as non-SLP is in-tree. 2020-05-29 Richard Biener <rguenther@suse.de> PR tree-optimization/95272 * tree-vectorizer.h (_slp_tree::representative): Add. (SLP_TREE_REPRESENTATIVE): Likewise. * tree-vect-loop.c (vectorizable_reduction): Adjust SLP node gathering. (vectorizable_live_operation): Use the representative to attach the reduction info to. * tree-vect-slp.c (_slp_tree::_slp_tree): Initialize SLP_TREE_REPRESENTATIVE. (vect_create_new_slp_node): Likewise. (slp_copy_subtree): Copy it. (vect_slp_rearrange_stmts): Re-arrange even COND_EXPR stmts. (vect_slp_analyze_node_operations_1): Pass the representative to vect_analyze_stmt. (vect_schedule_slp_instance): Pass the representative to vect_transform_stmt. * gcc.dg/vect/pr95272.c: New testcase.
2020-05-29tree-optimization/95356 - more vectorizable_shift massagingRichard Biener1-17/+20
The previous fix clashed with the rewrite to emit SLP invariants during the SLP walk. Thus the following adjusts the SLP tree hacking vectorizable_shift does appropriately. Still resisting the attempt of a rewrite of vectorizable_shift ... 2020-05-29 Richard Biener <rguenther@suse.de> PR tree-optimization/95356 * tree-vect-stmts.c (vectorizable_shift): Do in-place SLP node hacking during analysis.
2020-05-29Fix streamer desynchornization caused by streamer debugging patchJan Hubicka1-2/+3
it turns out I lost one hunk in the patch disabling extra streaming which causes streamer to go out of sync in the case non-trivial scc containing the node being streamed appears in local stream (which seems quite rare since it does not happen during bootstrap). 2020-05-29 Jan Hubicka <hubicka@ucw.cz> PR lto/95362 * lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
2020-05-29tree-optimization/95403 - guard vect_init_vector_1 against NULL stmt_infoRichard Biener2-1/+17
2020-05-29 Richard Biener <rguenther@suse.de> PR tree-optimization/95403 * tree-vect-stmts.c (vect_init_vector_1): Guard against NULL stmt_vinfo. * gfortran.dg/vect/pr95403.f: New testcase.
2020-05-29openmp: One omp_resolve_declare_variant followupJakub Jelinek2-1/+47
As noticed by Arseny, I got the condition when to call the add removal hook wrong wrong. Fixed thusly. 2020-05-28 Jakub Jelinek <jakub@redhat.com> PR middle-end/95315 * omp-general.c (omp_resolve_declare_variant): Fix up addition of declare variant cgraph node removal callback. * gcc.dg/gomp/pr95315-2.c: New test.
2020-05-29expander: Optimize store_expr from STRING_CST [PR95052]Jakub Jelinek2-1/+53
In the following testcase, store_expr of e.g. 97 bytes long string literal into 1MB long array is implemented by copying the 97 bytes from .rodata section, followed by clearing the remaining bytes. But, as the STRING_CST has type char[1024*1024], we actually allocate whole 1MB in .rodata section for it, even when we only use the first 97 bytes from that. The following patch tweaks it so that if we are going to initialize only the small part from it, we don't emit all the zeros that we never use after it. 2020-05-29 Jakub Jelinek <jakub@redhat.com> PR middle-end/95052 * expr.c (store_expr): If expr_size is constant and significantly larger than TREE_STRING_LENGTH, set temp to just the TREE_STRING_LENGTH portion of the STRING_CST. * gcc.target/i386/pr95052.c: New test.
2020-05-29tree-optimization/95393 - fold MIN/MAX_EXPR generated by phioptRichard Biener3-13/+29
This makes sure to fold generated stmts so they do not survive until RTL expansion and cause awkward code generation. 2020-05-29 Richard Biener <rguenther@suse.de> PR tree-optimization/95393 * tree-ssa-phiopt.c (minmax_replacement): Use gimple_build to build the min/max expression so we simplify cases like MAX(0, s) immediately. * gcc.dg/tree-ssa/phi-opt-21.c: New testcase. * g++.dg/vect/slp-pr87105.cc: Adjust.
2020-05-29aarch64: add support for unpacked EOR, ORR and ANDJoe Ramsay28-10/+358
Extended patterns for these instructions to support unpacked vectors. BIC will have to wait, as there is not currently support for unpacked NOT. 2020-05-29 Joe Ramsay <joe.ramsay@arm.com> gcc/ * config/aarch64/aarch64-sve.md (<LOGICAL:optab><mode>3): Add support for unpacked EOR, ORR, AND. gcc/testsuite/ * gcc.target/aarch64/sve/load_const_offset_2.c: Force using packed vectors. * gcc.target/aarch64/sve/logical_unpacked_and_1.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_2.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_3.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_4.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_5.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_6.c: New test. * gcc.target/aarch64/sve/logical_unpacked_and_7.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_1.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_2.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_3.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_4.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_5.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_6.c: New test. * gcc.target/aarch64/sve/logical_unpacked_eor_7.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_1.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_2.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_3.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_4.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_5.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_6.c: New test. * gcc.target/aarch64/sve/logical_unpacked_orr_7.c: New test. * gcc.target/aarch64/sve/scatter_store_6.c: Force using packed vectors. * gcc.target/aarch64/sve/scatter_store_7.c: Force using packed vectors. * gcc.target/aarch64/sve/strided_load_3.c: Force using packed vectors. * gcc.target/aarch64/sve/strided_store_3.c: Force using packed vectors. * gcc.target/aarch64/sve/unpack_signed_1.c: Force using packed vectors.
2020-05-29Daily bump.GCC Administrator7-1/+243
2020-05-28c++: Try to complete decomp types [PR95328]Jakub Jelinek2-0/+24
Two years ago Paolo has added the else if (processing_template_decl && !COMPLETE_TYPE_P (type)) pedwarn (...); lines into cp_finish_decomp. For type dependent decl we punt much earlier, but even for types which aren't type dependent COMPLETE_TYPE_P might be false as this testcase shows, so this patch tries to complete_type first (the reason for writing it that way is that it is then followed by another else if and if complete_type returns error_mark_node, we shouldn't report anything, as a bug should have been reported already. 2020-05-28 Jakub Jelinek <jakub@redhat.com> PR c++/95328 * decl.c (cp_finish_decomp): Call complete_type before checking COMPLETE_TYPE_P. * g++.dg/cpp1z/decomp53.C: New test.
2020-05-28PR fortran/95373 - ICE in build_reference_type, at tree.c:7942Harald Anlauf3-0/+52
The use of KIND, LEN, RE, and IM inquiry references for applicable intrinsic types is valid only for suffienctly new Fortran standards. Add appropriate check. 2020-05-28 Harald Anlauf <anlauf@gmx.de> gcc/fortran/ PR fortran/95373 * primary.c (is_inquiry_ref): Check validity of inquiry references against selected Fortran standard. gcc/testsuite/ PR fortran/95373 * gfortran.dg/pr95373_1.f90: New test. * gfortran.dg/pr95373_2.f90: New test.
2020-05-28c++: Immediately deduce auto member [PR94926].Jason Merrill6-12/+29
In r9-297 I was trying to be more flexible and treat static data members of class templates more like variable templates, where the type need not be determined until the variable is instantiated, but I suppose that in a class the types of all the non-template members need to be determined at the time of class instantiation. gcc/cp/ChangeLog: PR c++/94926 * decl.c (cp_finish_decl): Revert r9-297 change. (check_static_variable_definition): Likewise. * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise. * pt.c (instantiate_decl): Return early on type error. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/pr86648.C: Expect error. * g++.dg/cpp1z/static2.C: Expect error. * g++.dg/cpp0x/nsdmi16.C: New test.
2020-05-28jit: port libgccjit to WindowsNicolás Bértolo10-25/+413
2020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com> /ChangeLog: * configure.ac: Don't require --enable-host-shared when building for Mingw. * configure: Regenerate. 2020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com> gcc/ChangeLog: * Makefile.in: don't look for libiberty in the "pic" subdirectory when building for Mingw. Add dependency on xgcc with the proper extension. 2020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com> gcc/c/ChangeLog: * Make-lang.in: Remove extra slash. 2020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com> gcc/jit/ChangeLog: * Make-lang.in: Remove extra slash. Build libgccjit.dll and its import library in Windows. * config-lang.in: Update comment about --enable-host-shared. * jit-w32.h: New file. * jit-w32.c: New file. (print_last_error): New function that prints the error string corresponding to GetLastError(). (get_TOKEN_USER_current_user): Helper function used for getting the SID belonging to the current user. (create_directory_for_current_user): Helper function to create a directory with permissions such that only the current user can access it. (win_mkdtemp): Create a temporary directory using Windows APIs. * jit-playback.c: Do not chmod files in Windows. Use LoadLibrary, FreeLibrary and GetProcAddress instead of libdl. * jit-result.h, jit-result.c: Introduce result::handle_t to abstract over the types used for dynamic library handles. * jit-tempdir.c: Do not use mkdtemp() in Windows, use win_mkdtemp().
2020-05-28Finish prior patchJeff Law1-8/+0
* config/h8300/logical.md (bclrhi_msx): Remove pattern.
2020-05-28Fix incorrect code generation with bit insns on H8/SX.Jeff Law1-19/+17
* config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't make a nonzero adjustment to the memory offset. (b<ior,xor>hi_msx): Turn into a splitter.
2020-05-28Fix off-by-one error in previous commitEric Botcazou1-2/+2
The bitregion_end field points to the next bit after the region. gcc/ChangeLog * gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into): Fix off-by-one error.
2020-05-28c++: Fix initlist-array12.CMarek Polacek1-1/+3
* g++.dg/cpp0x/initlist-array12.C: Fix the definition of initializer_list for ilp32 target.
2020-05-28c++: Fix tmplattr10.CMarek Polacek1-1/+1
This test uses C++11 features so should only run in c++11. * g++.dg/ext/tmplattr10.C: Only run in c++11.
2020-05-28Revert "Add missing ChangeLog entry for r11-694"H.J. Lu1-4/+0
This reverts commit 7e58fe0e4c2b79a1cf5c93161856e27e1c830162.
2020-05-28Add missing ChangeLog entry for r11-694H.J. Lu1-0/+4
2020-05-28gcc.dg/builtin-bswap-10.c: Check "! int128"H.J. Lu1-1/+1
Check "! int128" instead of ilp32 since ILP32 targets can support int128. gcc/testsuite/ * gcc.dg/builtin-bswap-10.c: Check "! int128" instead of ilp32
2020-05-28Fortran : "type is( real(kind(1.)) )" spurious syntax error PR94397Mark Eggleston2-1/+30
Based on a patch in the comments of the PR. That patch fixed this problem but caused the test cases for PR93484 to fail. It has been changed to reduce initialisation expressions if the expression is not EXPR_VARIABLE and not EXPR_CONSTANT. 2020-05-28 Steven G. Kargl <kargl@gcc.gnu.org> Mark Eggleston <markeggleston@gcc.gnu.org> gcc/fortran/ PR fortran/94397 * match.c (gfc_match_type_spec): New variable ok initialised to true. Set ok with the return value of gfc_reduce_init_expr called only if the expression is not EXPR_CONSTANT and is not EXPR_VARIABLE. Add !ok to the check for type not being integer or the rank being greater than zero. 2020-05-28 Mark Eggleston <markeggleston@gcc.gnu.org> gcc/testsuite/ PR fortran/94397 * gfortran.dg/pr94397.F90: New test.
2020-05-28aarch64: Fix missed shrink-wrapping opportunityRichard Sandiford3-0/+44
wb_candidate1 and wb_candidate2 exist for two overlapping cases: when we use an STR or STP with writeback to allocate the frame, and when we set up a frame chain record (either using writeback allocation or not). However, aarch64_layout_frame was leaving these fields with legitimate register numbers even if we decided to do neither of those things. This prevented those registers from being shrink-wrapped, even though we were otherwise treating them as normal saves and restores. The case this patch handles isn't the common case, so it might not be worth going out of our way to optimise it. But I think the patch actually makes the output of aarch64_layout_frame more consistent. 2020-05-28 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64.h (aarch64_frame): Add a comment above wb_candidate1 and wb_candidate2. * config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate wb_candidate1 and wb_candidate2 if we decided not to use them. gcc/testsuite/ * gcc.target/aarch64/shrink_wrap_1.c: New test.
2020-05-28aarch64: Fix segfault in aarch64_expand_epilogue [PR95361]Richard Sandiford2-1/+16
The stack frame for the function in the testcase consisted of two SVE save slots. Both saves had been shrink-wrapped, but for different blocks, meaning that the stack allocation and deallocation were separate from the saves themselves. Before emitting the deallocation, we tried to attach a REG_CFA_DEF_CFA note to the preceding instruction, to redefine the CFA in terms of the stack pointer. But in this case there was no preceding instruction. This in practice only happens for SVE because: (a) We don't try to shrink-wrap wb_candidate* registers even when we've decided to treat them as normal saves and restores. I have a fix for that. (b) Even with (a) fixed, we're (almost?) guaranteed to emit a stack tie for frames that are 64k or larger, so we end up hanging the REG_CFA_DEF_CFA note on that instead. We should only need to redefine the CFA if it was previously defined in terms of the frame pointer. In other cases the CFA should already be defined in terms of the stack pointer, so redefining it is unnecessary but usually harmless. 2020-05-28 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR testsuite/95361 * config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that we have at least some CFI operations when using a frame pointer. Only redefine the CFA if we have CFI operations. gcc/testsuite/ PR testsuite/95361 * gcc.target/aarch64/sve/pr95361.c: New test.
2020-05-28remove obsolete code from SLP invariant costingRichard Biener1-8/+2
This removes handling of !SLP_TREE_VECTYPE from invariant costing. The single caller guards against this case already. 2020-05-28 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_prologue_cost_for_slp): Remove case for !SLP_TREE_VECTYPE. (vect_slp_analyze_node_operations): Adjust.
2020-05-28Code generate externals/invariants during the SLP graph walkRichard Biener2-118/+42
This generates vector defs for externals and invariants during the SLP walk rather than as part of getting vectorized defs when vectorizing the users. This is a requirement to make sharing of external/invariant nodes be reflected in actual code generation. This temporarily adds a SLP_TREE_VEC_DEFS vector alongside the SLP_TREE_VEC_STMTS one. Eventually the latter can go away. 2020-05-27 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (_slp_tree::vec_defs): Add. (SLP_TREE_VEC_DEFS): Likewise. * tree-vect-slp.c (_slp_tree::_slp_tree): Adjust. (_slp_tree::~_slp_tree): Likewise. (vect_mask_constant_operand_p): Remove unused function. (vect_get_constant_vectors): Rename to... (vect_create_constant_vectors): ... this. Take the invariant node as argument and code generate it. Remove dead code, remove temporary asserts. Pass a NULL stmt_info to vect_init_vector. (vect_get_slp_defs): Simplify. (vect_schedule_slp_instance): Code-generate externals and invariants using vect_create_constant_vectors.
2020-05-28make vect_finish_stmt_generation work w/o stmt_vec_infoRichard Biener1-8/+13
This makes the call chain below vec_init_vector happy with a NULL stmt_vec_info which is used as "context". 2020-05-27 Richard Biener <rguenther@suse.de> * tree-vect-stmts.c (vect_finish_stmt_generation_1): Conditionalize stmt_info use, assert the new stmt cannot throw when not specified. (vect_finish_stmt_generation): Adjust assert.
2020-05-28tree-optimization/95273 - more vectorizable_shift massagingRichard Biener2-1/+130
Covering all bases in vectorizable_shift is hard - this makes sure to appropriately handle the case of PR95356 without breaking others. 2020-05-28 Richard Biener <rguenther@suse.de> PR tree-optimization/95273 PR tree-optimization/95356 * tree-vect-stmts.c (vectorizable_shift): Adjust when and to what we set the vector type of the shift operand SLP node again. * gcc.target/i386/pr95356.c: New testcase.
2020-05-28arm: Fix unwanted fall-throughs in arm.cAndrea Corallo1-0/+6
gcc/ChangeLog 2020-05-28 Andrea Corallo <andrea.corallo@arm.com> * config/arm/arm.c (mve_vector_mem_operand): Fix unwanted fall-throughs.
2020-05-28Add documentation for missing params.Martin Liska1-5/+33
The patch fixes various issues spotted by check-params-in-docs.py script. I'm going to install the patch. gcc/ChangeLog: PR web/95380 * doc/invoke.texi: Add missing params, remove max-once-peeled-insns and rename ipcp-unit-growth to ipa-cp-unit-growth.
2020-05-28Fix nonconforming memory_operand for vpmovq{d,w,b}/vpmovd{w,b}/vpmovwb.liuhongt7-283/+421
According to Intel SDM, VPMOVQB xmm1/m16 {k1}{z}, xmm2 has 16-bit memory_operand instead of 128-bit one which existed in current implementation. Also for other vpmov instructions which have memory_operand narrower than 128bits. 2020-05-25 Hongtao Liu <hongtao.liu@intel.com> gcc/ChangeLog * config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename from *avx512vl_<code>v2div2qi_store and refine memory size of the pattern. (*avx512vl_<code>v2div2qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v4qi2_store_1): Ditto. (*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v8qi2_store_1): Ditto. (*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto. (*avx512vl_<code><mode>v4hi2_store_1): Ditto. (*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2hi2_store_1): Ditto. (*avx512vl_<code>v2div2hi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2si2_store_1): Ditto. (*avx512vl_<code>v2div2si2_mask_store_1): Ditto. (*avx512f_<code>v8div16qi2_store_1): Ditto. (*avx512f_<code>v8div16qi2_mask_store_1): Ditto. (*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split. (*avx512vl_<code>v2div2qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v4qi2_store_2): Ditto. (*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v8qi2_store_2): Ditto. (*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto. (*avx512vl_<code><mode>v4hi2_store_2): Ditto. (*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto. (*avx512vl_<code>v2div2hi2_store_2): Ditto. (*avx512vl_<code>v2div2hi2_mask_store_2): Ditto. (*avx512vl_<code>v2div2si2_store_2): Ditto. (*avx512vl_<code>v2div2si2_mask_store_2): Ditto. (*avx512f_<code>v8div16qi2_store_2): Ditto. (*avx512f_<code>v8div16qi2_mask_store_2): Ditto. * config/i386/i386-builtin-types.def: Adjust builtin type. * config/i386/i386-expand.c: Ditto. * config/i386/i386-builtin.def: Adjust builtin. * config/i386/avx512fintrin.h: Ditto. * config/i386/avx512vlbwintrin.h: Ditto. * config/i386/avx512vlintrin.h: Ditto.
2020-05-28testsuite/95363 - fix gcc.dg/vect/bb-slp-pr95271.c for ilp32Richard Biener1-7/+10
This fixes the testcase to avoid out of bound shifts on ilp32 targets. 2020-05-28 Richard Biener <rguenther@suse.de> PR testsuite/95363 * gcc.dg/vect/bb-slp-pr95271.c: Fix on ilp32 targets.
2020-05-28gcov-tool: Flexible endian adjustment for merging coverage dataMartin Liska2-3/+6
gcc/ChangeLog: 2020-05-27 Dong JianQiang <dongjianqiang2@huawei.com> PR gcov-profile/95332 * gcov-io.c (gcov_var::endian): Move field. (from_file): Add IN_GCOV_TOOL check. * gcov-io.h (gcov_magic): Ditto. libgcc/ChangeLog: 2020-05-27 Dong JianQiang <dongjianqiang2@huawei.com> PR gcov-profile/95332 * libgcov-util.c (read_gcda_file): Call gcov_magic. * libgcov.h (gcov_magic): Disable GCC poison.
2020-05-28Daily bump.GCC Administrator7-1/+228
2020-05-27outputs.exp: no lto, linker default output, cdtor temps, empty argsAlexandre Oliva2-48/+119
This patch fixes various issues in the testsuite that came up after the dump/aux output revamp, namely: - many outputs.exp tests used -flto without checking that LTO was supported, getting lots of failures. With this patch, we test for LTO support, and skip -flto tests on platforms that do not support it. - some linkers error out if an output file is not named, and the a.{out,exe} construct that we used throughout outputs.exp to match the default linker output would trigger a bug in tcl globbing. With this patch, we detect the default linker output early. If none is found, we arrange to pass -o a.out explicitly in tests that used to test the default linker output. We now look for the detected default, or for explicitly-specified output. - collect2 will leave <execname>.cdtor.* files behind in -save-temps tests. Ignore them. - The prepending of -Wl, to file names in ldflags et al was done in a way that introduced empty arguments when consecutive blanks appeared in these board configuration knobs. Skip the empty strings between consecutive blanks to avoid this problem. gcc/testsuite/ChangeLog: * lib/gcc-defs.exp: Avoid introducing empty arguments between consecutive blanks in board linking options. * gcc.misc-tests/outputs.exp: Likewise. Document -gsplit-dwarf testing, skip LTO tests if -flto is not supported, detect the default linker output name, cope with the need for an explicit executable output.