- 05 Jul, 2017 13 commits
-
-
* tree-loop-distribution.c: Add general explanantion on the pass. (generate_loops_for_partition): Mark distributed loop. (pg_add_dependence_edges): New parameter. Handle alias data dependence specially and record it in the parameter if asked. (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs. (init_partition_graph_vertices, add_partition_graph_edge): New. (pg_skip_alias_edge, free_partition_graph_edata_cb): New. (free_partition_graph_vdata, build_partition_graph): New. (sort_partitions_by_post_order, merge_dep_scc_partitions): New. (pg_collect_alias_ddrs, break_alias_scc_partitions): New. (data_ref_segment_size, latch_dominated_by_data_ref): New. (compute_alias_check_pairs, version_loop_by_alias_check): New. (version_for_distribution_p, finalize_partitions): New. (distribute_loop): Handle alias data dependence specially. Factor out loop fusion code as functions and call these functions. gcc/testsuite * gcc.dg/tree-ssa/ldist-4.c: Adjust test string. * gcc.dg/tree-ssa/ldist-12.c: Ditto. * gcc.dg/tree-ssa/ldist-13.c: Ditto. * gcc.dg/tree-ssa/ldist-14.c: Ditto. From-SVN: r249994
Bin Cheng committed -
* tree-loop-distribution.c (classify_partition): New parameter and better handle reduction statement. (rdg_build_partitions): Revise comment. (distribute_loop): Compute statements in all partitions and pass it to classify_partition. gcc/testsuite * gcc.dg/tree-ssa/ldist-26.c: New test. From-SVN: r249993
Bin Cheng committed -
* tree-loop-distribution.c (enum partition_type): New. (struct partition): New field type. (partition_merge_into): Add parameter. Update partition type. (data_dep_in_cycle_p, update_type_for_merge): New functions. (build_rdg_partition_for_vertex): Compute partition type. (rdg_build_partitions): Dump partition type. (distribute_loop): Update calls to partition_merge_into. From-SVN: r249992
Bin Cheng committed -
* tree-loop-distribution.c (struct ddr_hasher): New. (ddr_hasher::hash, ::equal, get_data_dependence): New function. (ddrs_table): New. (classify_partition): Call get_data_dependence. (pg_add_dependence_edges): Ditto. (distribute_loop): Release data dependence hash table. From-SVN: r249991
Bin Cheng committed -
* tree-loop-distribution.c (ref_base_address): Delete. (similar_memory_accesses): Rename ... (share_memory_accesses): ... to this. Check if partitions access the same memory reference. (distribute_loop): Call share_memory_accesses. gcc/testsuite * gcc.dg/tree-ssa/ldist-6.c: XFAIL. From-SVN: r249990
Bin Cheng committed -
* tree-loop-distribution.c (struct partition): New field recording its data reference. (partition_alloc, partition_free): Init and release data refs. (partition_merge_into): Merge data refs. (build_rdg_partition_for_vertex): Collect data refs for partition. (pg_add_dependence_edges): Change parameters from vector to bitmap. Update uses. (distribute_loop): Remve data refs from vertice data of partition graph. From-SVN: r249989
Bin Cheng committed -
* tree-loop-distribution.c (params.h): Include header file. (MAX_DATAREFS_NUM, DR_INDEX): New macro. (datarefs_vec): New global var. (create_rdg_vertices): Use datarefs_vec directly. (free_rdg): Don't free data references. (build_rdg): Update use. Don't free data references. (distribute_loop): Compute global variable for data references. Bail out if there are too many data references. From-SVN: r249988
Bin Cheng committed -
* tree-loop-distribution.c (loop_nest): New global var. (build_rdg): Use loop directly, rather than loop nest. (pg_add_dependence_edges): Remove loop nest parameter. Use global variable directly. (distribute_loop): Compute global variable loop nest. Update use. From-SVN: r249987
Bin Cheng committed -
* tree-loop-distribution.c (enum fuse_type, fuse_message): New. (partition_merge_into): New parameter. Dump reason for fusion. (distribute_loop): Update use of partition_merge_into. From-SVN: r249986
Bin Cheng committed -
* tree-loop-distribution.c (bb_top_order_index): New. (bb_top_order_index_size, bb_top_order_cmp): New. (stmts_from_loop): Use topological order. (pass_loop_distribution::execute): Compute and release topological order for basic blocks. From-SVN: r249985
Bin Cheng committed -
* tree-loop-distribution.c (pass_loop_distribution::execute): Skip if no loops. From-SVN: r249984
Bin Cheng committed -
* cfgloop.h (struct loop): Add comment. New field orig_loop_num. * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change. * internal-fn.c (expand_LOOP_DIST_ALIAS): New function. * internal-fn.def (LOOP_DIST_ALIAS): New. * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ... (fold_loop_internal_call): ... this. (vect_loop_dist_alias_call): New function. (set_uid_loop_bbs): Call fold_loop_internal_call. (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS internal calls. From-SVN: r249983
Bin Cheng committed -
From-SVN: r249982
GCC Administrator committed
-
- 04 Jul, 2017 26 commits
-
-
2017-07-04 Uros Bizjak <ubizjak@gmail.com> PR target/81300 * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes): Require dead FLAGS_REG at the beginning of a peephole. testsuite/ChangeLog: PR target/81300 * gcc.target/i386/pr81300.c: New test. From-SVN: r249977
Uros Bizjak committed -
PR target/81294 * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y arguments in the call to __builtin_ia32_sbb_u32. (_subborrow_u64): Swap _X and _Y arguments in the call to __builtin_ia32_sbb_u64. testsuite/ChangeLog: PR target/81294 * gcc.target/i386/adx-addcarryx32-2.c (adx_test): Swap x and y arguments in the call to _subborrow_u32. * gcc.target/i386/adx-addcarryx64-2.c (adx_test): Swap x and y arguments in the call to _subborrow_u64. * gcc.target/i386/pr81294-1.c: New test. * gcc.target/i386/pr81294-2.c: Ditto. From-SVN: r249976
Uros Bizjak committed -
PR debug/81278 * tree-vrp.c (compare_assert_loc): Turn into a function template with stable template parameter. Only test if a->e is NULL, !a->e == !b->e has been verified already. Use e == NULL or e != NULL instead of e or ! e tests. If stable is true, don't use iterative_hash_expr, on the other side allow a or b or both NULL and sort the NULLs last. (process_assert_insertions): Sort using compare_assert_loc<false> instead of compare_assert_loc, later sort using compare_assert_loc<true> before calling process_assert_insertions_for in a loop. Use break instead of continue once seen NULL pointer. From-SVN: r249975
Jakub Jelinek committed -
2017-07-04 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM Cortex-R7 and Cortex-R8 processors. From-SVN: r249974
Thomas Preud'homme committed -
* ipa-utils.c (ipa_merge_profiles): Fix merging when dst is uninitialized while src is not. From-SVN: r249973
Jan Hubicka committed -
While doing some unrelated work the gcc.target/aarch64/simd/vminmaxnm_1.c testcase started failing for me. Upon investigation it turns out that it breaks the C strict aliasing rules in the CHECK macro by casting a pointer to an incompatible type and dereferencing it. GCC even warns about it if compiled with -Wstrict-aliasing. This patch fixes the testcase by making it use memcmp to compare the vector elements. This avoids the undefined behaviour. The testcase still passes on trunk. * gcc.target/aarch64/simd/vminmaxnm_1.c: Fix strict aliasing issues. From-SVN: r249972
Kyrylo Tkachov committed -
When I originally started work on the new options framework for ARM I'd worked on the assumption that AWK might not be available on every build machine (only on developer's machines). However, looking again I notice that all the options framework relies on it being present for every build. This means that some of the generated files that come from running parsecpu.awk do not need to be kept under revision control. Unfortunately, it's not _all_ generated files. The build infrastructure assumes that all .md fragments are in the source tree and similarly that all .opt fragments are there as well. Still, eliminating the very big .h files is a step forward as they are very regular in structure and diff/patch/merge tools can sometimes make mistakes when resolving conflicts. So this patch removes the generated .h files from the source tree and tweaks the make rules accordingly. I've also changed the build rules to use the stamp technique to eliminate some false dependencies in a rebuild. Top-level: * contrib/gcc_update (files_and_dependencies): Remove stamp rules for arm-specific auto-generated header files. gcc: * common/config/arm/arm-common.c: Adjust include path for arm-cpu-cdata.h * t-arm (TM_H): Adjust path for arm-cpu.h. (arm-cpu.h): Create in build directory. Adjust dependency rules. (arm-cpu-data.h): Likewise. (arm-cpu-cdata.h): Likewise. * config/arm/arm-cpu.h: Delete. * config/arm/arm-cpu-cdata.h: Delete. * config/arm/arm-cpu-data.h: Delete. From-SVN: r249971
Richard Earnshaw committed -
Much like my AArch64 patch a few weeks ago, 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 Both Cortex-A55 and Cortex-A75 support ARMv8-A with the ARM8.1-A and ARMv8.2-A extensions. This is reflected in the patch, -mcpu=cortex-a75 is treated as equivalent to passing -mtune=cortex-a75 -march=armv8.2-a+fp16 gcc/ 2017-07-04 James Greenhalgh <james.greenhalgh@arm.com> * config/arm/arm-cpus.in (cortex-a55): New. (cortex-a75): Likewise. (cortex-a75.cortex-a55): Likewise. * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and cortex-a75. * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75. * config/arm/arm-cpu-cdata.h: Regenerate. * config/arm/arm-cpu-data.h: Regenerate. * config/arm/arm-cpu.h: Regenerate. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. From-SVN: r249970
James Greenhalgh committed -
From-SVN: r249967
Jan Hubicka committed -
* bb-reorder.c (better_edge_p): Fix handling of uninitialized probability. From-SVN: r249966
Jan Hubicka committed -
This patch fixes relative pathnames in gcc/ChangeLog for r247584. From-SVN: r249964
Thomas Preud'homme committed -
PR c/81231 * c-common.c (sync_resolve_size): Give error for pointers to incomplete types. * gcc.dg/atomic-pr81231.c: New test. From-SVN: r249963
Marek Polacek committed -
* brigfrontend/brig-function.cc: Include profile-count.h. * brigfrontend/brig-to-generic.cc: Likewise. From-SVN: r249962
Jakub Jelinek committed -
r249880 installed the result of a strlen in a strinfo if the strinfo wasn't previously a full string. But as Jakub says in the PR comments, we can't just do that in isolation, because there are no vdefs on the call that would invalidate any related strinfos. This patch updates the related strinfos if the adjustment is simple and invalidates them otherwise. As elsewhere, we treat adjustments of the form strlen +/- INTEGER_CST as simple but anything else as too complex. 2017-07-04 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR tree-optimization/81292 * tree-ssa-strlen.c (handle_builtin_strlen): When setting full_string_p, also call adjust_related_strinfos if the adjustment is simple, otherwise invalidate related strinfos. gcc/testsuite/ PR tree-optimization/81292 * gcc.dg/pr81292-1.c: New test. * gcc.dg/pr81292-2.c: Likewise. From-SVN: r249961
Richard Sandiford committed -
2017-07-04 Martin Liska <mliska@suse.cz> PR sanitizer/81040 * sanopt.c (sanitize_rewrite_addressable_params): Mark the newly created variable as DECL_IGNORED_P. 2017-07-04 Martin Liska <mliska@suse.cz> PR sanitizer/81040 * g++.dg/asan/function-argument-1.C: Run the test-case w/o use-after-scope sanitization. From-SVN: r249960
Martin Liska committed -
2017-07-04 Martin Liska <mliska@suse.cz> PR ipa/81293 * ipa-inline.c (inline_small_functions): Use xstrdup_for_dump. From-SVN: r249959
Martin Liska committed -
2017-07-04 Tom de Vries <tom@codesourcery.com> * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK. From-SVN: r249954
Tom de Vries committed -
From-SVN: r249953
Olivier Hainque committed -
* g++.dg/asan/function-argument-3.C: Add -Wno-psabi to additional options. From-SVN: r249952
Jakub Jelinek committed -
re PR target/81175 (EXC_BAD_ACCESS in ::slpeel_duplicate_current_defs_from_edges(edge, edge, edge, edge) at is-a.h:192) PR target/81175 * gcc.target/i386/pr69255-2.c (foo): Use the return value of the gather. From-SVN: r249951
Jakub Jelinek committed -
2017-07-04 Olivier Hainque <hainque@adacore.com> * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE): Restore unconditional basic definitions. (VXWORKS_LIBS_RTP): Likewise, prefixed by VXWORKS_SYSCALL_LIBS_RTP, empty by default. * config/i386/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE): Redefine, accounting for 64bit ABIs using cpu specific macros available for this purpose. (VXWORKS_SYSCALL_LIBS_RTP): Likewise. From-SVN: r249950
Olivier Hainque committed -
2017-07-04 Martin Liska <mliska@suse.cz> PR ipa/81214 * g++.dg/ext/mvc2.C: Add dg-require ifunc. * g++.dg/ext/mvc3.C: Likewise. * gcc.target/i386/mvc2.c: Likewise. * gcc.target/i386/mvc3.c: Likewise. From-SVN: r249949
Martin Liska committed -
parser.c (cp_parser_decomposition_declaration): Replace decomposition declaration with structured binding in diagnostics. * parser.c (cp_parser_decomposition_declaration): Replace decomposition declaration with structured binding in diagnostics. * decl.c (cp_finish_decomp): Likewise. (grokdeclarator): Likewise. * g++.dg/cpp1z/decomp1.C: Expect structured binding instead of decomposition declaration in diagnostics. * g++.dg/cpp1z/decomp2.C: Likewise. * g++.dg/cpp1z/decomp3.C: Likewise. * g++.dg/cpp1z/decomp4.C: Likewise. * g++.dg/cpp1z/decomp5.C: Likewise. * g++.dg/cpp1z/decomp6.C: Likewise. * g++.dg/cpp1z/decomp7.C: Likewise. * g++.dg/cpp1z/decomp8.C: Likewise. * g++.dg/cpp1z/decomp13.C: Likewise. * g++.dg/cpp1z/decomp14.C: Likewise. * g++.dg/cpp1z/decomp18.C: Likewise. * g++.dg/cpp1z/decomp19.C: Likewise. * g++.dg/cpp1z/decomp22.C: Likewise. * g++.dg/cpp1z/decomp23.C: Likewise. * g++.dg/cpp1z/decomp24.C: Likewise. * g++.dg/cpp1z/decomp25.C: Likewise. * g++.dg/cpp1z/decomp26.C: Likewise. * g++.dg/cpp1z/decomp28.C: Likewise. From-SVN: r249948
Jakub Jelinek committed -
re PR c++/81258 (ICE on C++1z code with invalid decomposition declaration: in cp_finish_decl, at cp/decl.c:6760) PR c++/81258 * parser.c (cp_parser_decomposition_declaration): Diagnose invalid forms of structured binding initializers. * g++.dg/cpp1z/decomp21.C (foo): Adjust expected diagnostics. * g++.dg/cpp1z/decomp30.C: New test. From-SVN: r249947
Jakub Jelinek committed -
From-SVN: r249943
Marek Polacek committed -
From-SVN: r249942
GCC Administrator committed
-
- 03 Jul, 2017 1 commit
-
-
2017-06-27 Olivier Hainque <hainque@adacore.com> * config/t-vxworks7: New file. New file mistakenly omitted from previous commit referencing it. From-SVN: r249938
Olivier Hainque committed
-