aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-08-04openmp: Compute number of collapsed loop iterations more efficiently for ↵Jakub Jelinek1-100/+352
some non-rectangular loops 2020-08-04 Jakub Jelinek <jakub@redhat.com> * omp-expand.c (expand_omp_for_init_counts): For triangular loops compute number of iterations at runtime more efficiently. (expand_omp_for_init_vars): Adjust immediate dominators. (extract_omp_for_update_vars): Likewise.
2020-08-04d: Fix PR96429: Pointer subtraction uses TRUNC_DIV_EXPRIain Buclaw2-0/+38
gcc/d/ChangeLog: PR d/96429 * expr.cc (ExprVisitor::visit (BinExp*)): Use EXACT_DIV_EXPR for pointer diff expressions. gcc/testsuite/ChangeLog: PR d/96429 * gdc.dg/pr96429.d: New test.
2020-08-04Change testcase for pr96325 from run to compile.Paul Thomas1-1/+1
2020-08-04 Paul Thomas <pault@gcc.gnu.org> gcc/testsuite/ PR fortran/96325 * gfortran.dg/pr96325.f90: Change from run to compile.
2020-08-04Adjust two_valued_val_range_p for irange API.Aldy Hernandez1-22/+9
gcc/ChangeLog: * vr-values.c (simplify_using_ranges::two_valued_val_range_p): Use irange API.
2020-08-04Adjust simplify_conversion_using_ranges for irange API.Aldy Hernandez1-4/+7
gcc/ChangeLog: * vr-values.c (simplify_conversion_using_ranges): Convert to irange API.
2020-08-04Use irange API in test_for_singularity.Aldy Hernandez1-5/+8
gcc/ChangeLog: * vr-values.c (test_for_singularity): Use irange API. (simplify_using_ranges::simplify_cond_using_ranges_1): Do not special case VR_RANGE.
2020-08-04Adjust vrp_evaluate_conditional for irange API.Aldy Hernandez1-5/+1
gcc/ChangeLog: * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust for irange API.
2020-08-04Adjust op_with_boolean_value_range_p for irange API.Aldy Hernandez1-3/+4
gcc/ChangeLog: * vr-values.c (simplify_using_ranges::op_with_boolean_value_range_p): Adjust for irange API.
2020-08-04Adjust get_range_info to use the base irange class.Aldy Hernandez2-2/+2
gcc/ChangeLog: * tree-ssanames.c (get_range_info): Use irange instead of value_range. * tree-ssanames.h (get_range_info): Same.
2020-08-04Adjust expr_not_equal_to to use irange API.Aldy Hernandez1-13/+4
gcc/ChangeLog: * fold-const.c (expr_not_equal_to): Adjust for irange API.
2020-08-04Remove ad-hoc range canonicalization from determine_block_size.Aldy Hernandez1-7/+1
Anti ranges of ~[MIN,X] are automatically canonicalized to [X+1,MAX], at creation time. There is no need to handle them specially. Tested by adding a gcc_unreachable and bootstrapping/testing. gcc/ChangeLog: * builtins.c (determine_block_size): Remove ad-hoc range canonicalization.
2020-08-03dse: Remove partial load after full store for high part access[PR71309]Xionghu Luo2-29/+83
v5 update as comments: 1. Move const_rhs out of loop; 2. Iterate from int size for read_mode. This patch could optimize(works for char/short/int/void*): 6: r119:TI=[r118:DI+0x10] 7: [r118:DI]=r119:TI 8: r121:DI=[r118:DI+0x8] => 6: r119:TI=[r118:DI+0x10] 16: r122:DI=r119:TI#8 Final ASM will be as below without partial load after full store(stxv+ld): ld 10,16(3) mr 9,3 ld 3,24(3) std 10,0(9) std 3,8(9) blr It could achieve ~25% performance improvement for typical cases on Power9. Bootstrap and regression tested on Power9-LE. For AArch64, one ldr is replaced by mov with this patch: ldp x2, x3, [x0, 16] stp x2, x3, [x0] ldr x0, [x0, 8] => mov x1, x0 ldp x2, x0, [x0, 16] stp x2, x0, [x1] gcc/ChangeLog: 2020-08-04 Xionghu Luo <luoxhu@linux.ibm.com> PR rtl-optimization/71309 * dse.c (find_shift_sequence): Use subreg of shifted from high part register to avoid loading from address. gcc/testsuite/ChangeLog: 2020-08-04 Xionghu Luo <luoxhu@linux.ibm.com> PR rtl-optimization/71309 * gcc.target/powerpc/pr71309.c: New test.
2020-08-04Daily bump.GCC Administrator12-1/+626
2020-08-03c++: Remove unused declaration.Marek Polacek1-1/+0
gcc/cp/ChangeLog: * cp-tree.h (after_nsdmi_defaulted_late_checks): Remove.
2020-08-03libgcc: increase required stack space for x86_64 -fsplit-stackIan Lance Taylor1-1/+1
This accomodates increased space required by use of the xsavec instruction in the dynamic linker trampoline. libgcc/ChangeLog: * config/i386/morestack.S (BACKOFF) [x86_64]: Add 2048 bytes.
2020-08-03rs6000: Fix vector_float.c testcase for -m32Segher Boessenkool1-0/+1
It should be skipped then. 2020-08-03 Segher Boessenkool <segher@kernel.crashing.org> gcc/testsuite/ * gcc.target/powerpc/vector_float.c: Skip if not lp64.
2020-08-03c++: Variable template and template parameter pack [PR96218]Marek Polacek2-2/+19
This is DR 2032 which says that the restrictions regarding template parameter packs and default arguments apply to variable templates as well, but we weren't detecting that. gcc/cp/ChangeLog: DR 2032 PR c++/96218 * pt.c (check_default_tmpl_args): Also consider variable templates. gcc/testsuite/ChangeLog: DR 2032 PR c++/96218 * g++.dg/cpp1y/var-templ67.C: New test.
2020-08-03aarch64: Fix up __aarch64_cas16_acq_rel fallbackJakub Jelinek2-1/+17
As mentioned in the PR, the fallback path when LSE is unavailable writes incorrect registers to the memory if the previous content compares equal to x0, x1 - it writes copy of x0, x1 from the start of function, but it should write x2, x3. 2020-08-03 Jakub Jelinek <jakub@redhat.com> PR target/96402 * config/aarch64/lse.S (__aarch64_cas16_acq_rel): Use x2, x3 instead of x(tmp0), x(tmp1) in STXP arguments. * gcc.target/aarch64/pr96402.c: New test.
2020-08-03cpp: Do not use @dots for ... tokens in code examplesJonathan Wakely1-7/+7
This prevents a ... token in code examples from being turned into a single HORIZONTAL ELLIPSIS glyph (e.g. via the HTML &hellip; entity). gcc/ChangeLog: * doc/cpp.texi (Variadic Macros): Use the exact ... token in code examples.
2020-08-03Refer to C++20Nathan Sidwell1-7/+7
I noticed a bunch of references to c++2a. gcc/ * doc/invoke.texi: Refer to c++20
2020-08-03openacc: No attach/detach present/release mappings for array descriptorsJulian Brown4-31/+128
Standalone attach and detach clauses should not create present/release mappings for Fortran array descriptors (e.g. used when we have a pointer to an array), both because it is unnecessary and because those mappings will be incorrectly subject to reference counting. Simply omitting the mappings means we just use GOMP_MAP_TO_PSET and GOMP_MAP_{ATTACH,DETACH} mappings for array descriptors. That requires a tweak in gimplify.c, since we may now see GOMP_MAP_TO_PSET without a preceding data-movement mapping. 2020-08-03 Julian Brown <julian@codesourcery.com> Thomas Schwinge <thomas@codesourcery.com> gcc/fortran/ * trans-openmp.c (gfc_trans_omp_clauses): Don't create present/release mappings for array descriptors. gcc/ * gimplify.c (gimplify_omp_target_update): Allow GOMP_MAP_TO_PSET without a preceding data-movement mapping. gcc/testsuite/ * gfortran.dg/goacc/attach-descriptor.f90: Update pattern output. Add scanning of gimplify dump. libgomp/ * testsuite/libgomp.oacc-fortran/attach-descriptor-1.f90: Don't run for shared-memory devices. Extend with further checking. Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
2020-08-03Darwin: Guard two macros in darwin.h.Iain Sandoe1-0/+3
Work on the Arm64 port shows that these two macros can be declared ahead of the version in darwin.h which needs to override (for X86 and PPC this wasn't needed). gcc/ChangeLog: * config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before use. (DEF_MIN_OSX_VERSION): Only define if there's no existing def.
2020-08-03Darwin: Handle poly_int machine_modes.Iain Sandoe1-29/+33
The common code that selects suitable sections for literals needs to inspect the machine_mode. For some sub-targets that might be represented as a poly-int. There was a workaround in place that allowed for cases where the poly int had only one component. This removes the workaround and handles the cases where we care about the machine_mode size. gcc/ChangeLog: * config/darwin.c (IN_TARGET_CODE): Remove. (darwin_mergeable_constant_section): Handle poly-int machine modes. (machopic_select_rtx_section): Likewise.
2020-08-03internal/syscall/unix: correct ia64 syscall numbersIan Lance Taylor2-3/+3
Per Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/246264
2020-08-03internal/syscall/unix: define copyFileRangeTrap for all architecturesIan Lance Taylor10-27/+35
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/246363
2020-08-03Avoid shifting by amounts larger than target int in irange self-tests.Aldy Hernandez1-9/+10
gcc/ChangeLog: PR tree-optimization/96430 * range-op.cc (operator_tests): Do not shift by 31 on targets with integer's smaller than 32 bits.
2020-08-03Removal of HSA offloading from gcc and libgompMartin Jambor90-21260/+516
This patch removes the generation of HSAIL from the compiler, the HSA offloading plugin from libgomp and the associated testsuite tests and infrastructure bits from the respective testsuites. Apart from removal of the obvious files, I removed bits that I found by searching for HSA related terms and by re-tracing my steps and looking at the patches that introduced HSA in the first place. I did not remove everything these patches brought in, for example: - the mechanism to pass offload-target specific info from the application to the offloading plugin - but the same mechanism is also used to communicate number of teams and the thread limit to all offload targets. - run_func hook in gomp_device_descr stays too, although now it is not used. If some future offload target would like the ability to refuse to offload some functions, it can use it. It is easy to remove as a follow-up if it is considered clutter, though. - configure options --with-hsa-runtime=PATH, -with-hsa-runtime-include=PATH and --with-hsa-runtime-lib=PATH rmeain because GCN uses them too. - Surprisingly, GOMP_TARGET_ARG_HSA_KERNEL_ATTRIBUTES (a constant from gomp-constants.h) appears in the source of the amdgcn libgomp plugin, although I tend to think that code path is not ever used and this patch certainly removes it from the compiler. Nevertheless, it seems it has potential value beyond HSAIL and so I've kept it, it can of course always be easily removed in the future of GCN folk abandon it too. - I assume constants OFFLOAD_TARGET_TYPE_HSA and GOMP_DEVICE_HSA need to stay indefinitely too just so that no future offload target picks that number. - I have kept dg-require-effective-target offload_device_nonshared_as requirement of thests which have it. It is quite probable I missed some small HSA artifacts but those should be easy to remove later as we find them. include/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * gomp-constants.h (GOMP_VERSION_HSA): Remove. gcc/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * hsa-brig-format.h: Moved to brig/brigfrontend. * hsa-brig.c: Removed. * hsa-builtins.def: Likewise. * hsa-common.c: Likewise. * hsa-common.h: Likewise. * hsa-dump.c: Likewise. * hsa-gen.c: Likewise. * hsa-regalloc.c: Likewise. * ipa-hsa.c: Likewise. * omp-grid.c: Likewise. * omp-grid.h: Likewise. * Makefile.in (BUILTINS_DEF): Remove hsa-builtins.def. (OBJS): Remove hsa-common.o, hsa-gen.o, hsa-regalloc.o, hsa-brig.o, hsa-dump.o, ipa-hsa.c and omp-grid.o. (GTFILES): Removed hsa-common.c and omp-expand.c. * builtins.def: Remove processing of hsa-builtins.def. (DEF_HSA_BUILTIN): Remove. * common.opt (flag_disable_hsa): Remove. (-Whsa): Ignore. * config.in (ENABLE_HSA): Removed. * configure.ac: Removed handling configuration for hsa offloading. (ENABLE_HSA): Removed. * configure: Regenerated. * doc/install.texi (--enable-offload-targets): Remove hsa from the example. (--with-hsa-runtime): Reword to reference any HSA run-time, not specifically HSA offloading. * doc/invoke.texi (Option Summary): Remove -Whsa. (Warning Options): Likewise. (Optimize Options): Remove hsa-gen-debug-stores. * doc/passes.texi (Regular IPA passes): Remove section on IPA HSA pass. * gimple-low.c (lower_stmt): Remove GIMPLE_OMP_GRID_BODY case. * gimple-pretty-print.c (dump_gimple_omp_for): Likewise. (dump_gimple_omp_block): Likewise. (pp_gimple_stmt_1): Likewise. * gimple-walk.c (walk_gimple_stmt): Likewise. * gimple.c (gimple_build_omp_grid_body): Removed function. (gimple_copy): Remove GIMPLE_OMP_GRID_BODY case. * gimple.def (GIMPLE_OMP_GRID_BODY): Removed. * gimple.h (gf_mask): Removed GF_OMP_PARALLEL_GRID_PHONY, OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY, GF_OMP_FOR_GRID_INTRA_GROUP, GF_OMP_FOR_GRID_GROUP_ITER and GF_OMP_TEAMS_GRID_PHONY. Renumbered GF_OMP_FOR_KIND_SIMD and GF_OMP_TEAMS_HOST. (gimple_build_omp_grid_body): Removed declaration. (gimple_has_substatements): Remove GIMPLE_OMP_GRID_BODY case. (gimple_omp_for_grid_phony): Removed. (gimple_omp_for_set_grid_phony): Likewise. (gimple_omp_for_grid_intra_group): Likewise. (gimple_omp_for_grid_intra_group): Likewise. (gimple_omp_for_grid_group_iter): Likewise. (gimple_omp_for_set_grid_group_iter): Likewise. (gimple_omp_parallel_grid_phony): Likewise. (gimple_omp_parallel_set_grid_phony): Likewise. (gimple_omp_teams_grid_phony): Likewise. (gimple_omp_teams_set_grid_phony): Likewise. (CASE_GIMPLE_OMP): Remove GIMPLE_OMP_GRID_BODY case. * lto-section-in.c (lto_section_name): Removed hsa. * lto-streamer.h (lto_section_type): Removed LTO_section_ipa_hsa. * lto-wrapper.c (compile_images_for_offload_targets): Remove special handling of hsa. * omp-expand.c: Do not include hsa-common.h and gt-omp-expand.h. (parallel_needs_hsa_kernel_p): Removed. (grid_launch_attributes_trees): Likewise. (grid_launch_attributes_trees): Likewise. (grid_create_kernel_launch_attr_types): Likewise. (grid_insert_store_range_dim): Likewise. (grid_get_kernel_launch_attributes): Likewise. (get_target_arguments): Remove code passing HSA grid sizes. (grid_expand_omp_for_loop): Remove. (grid_arg_decl_map): Likewise. (grid_remap_kernel_arg_accesses): Likewise. (grid_expand_target_grid_body): Likewise. (expand_omp): Remove call to grid_expand_target_grid_body. (omp_make_gimple_edges): Remove GIMPLE_OMP_GRID_BODY case. * omp-general.c: Do not include hsa-common.h. (omp_maybe_offloaded): Do not check for HSA offloading. (omp_context_selector_matches): Likewise. * omp-low.c: Do not include hsa-common.h and omp-grid.h. (build_outer_var_ref): Remove handling of GIMPLE_OMP_GRID_BODY. (scan_sharing_clauses): Remove handling of OMP_CLAUSE__GRIDDIM_. (scan_omp_parallel): Remove handling of the phoney variant. (check_omp_nesting_restrictions): Remove handling of GIMPLE_OMP_GRID_BODY and GF_OMP_FOR_KIND_GRID_LOOP. (scan_omp_1_stmt): Remove handling of GIMPLE_OMP_GRID_BODY. (lower_omp_for_lastprivate): Remove handling of gridified loops. (lower_omp_for): Remove phony loop handling. (lower_omp_taskreg): Remove phony construct handling. (lower_omp_teams): Likewise. (lower_omp_grid_body): Removed. (lower_omp_1): Remove GIMPLE_OMP_GRID_BODY case. (execute_lower_omp): Do not call omp_grid_gridify_all_targets. * opts.c (common_handle_option): Do not handle hsa when processing OPT_foffload_. * params.opt (hsa-gen-debug-stores): Remove. * passes.def: Remove pass_ipa_hsa and pass_gen_hsail. * timevar.def: Remove TV_IPA_HSA. * toplev.c: Do not include hsa-common.h. (compile_file): Do not call hsa_output_brig. * tree-core.h (enum omp_clause_code): Remove OMP_CLAUSE__GRIDDIM_. (tree_omp_clause): Remove union field dimension. * tree-nested.c (convert_nonlocal_omp_clauses): Remove the OMP_CLAUSE__GRIDDIM_ case. (convert_local_omp_clauses): Likewise. * tree-pass.h (make_pass_gen_hsail): Remove declaration. (make_pass_ipa_hsa): Likewise. * tree-pretty-print.c (dump_omp_clause): Remove GIMPLE_OMP_GRID_BODY case. * tree.c (omp_clause_num_ops): Remove the element corresponding to OMP_CLAUSE__GRIDDIM_. (omp_clause_code_name): Likewise. (walk_tree_1): Remove GIMPLE_OMP_GRID_BODY case. * tree.h (OMP_CLAUSE__GRIDDIM__DIMENSION): Remove. (OMP_CLAUSE__GRIDDIM__SIZE): Likewise. (OMP_CLAUSE__GRIDDIM__GROUP): Likewise. gcc/fortran/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * f95-lang.c (gfc_init_builtin_functions): Remove processing of hsa-builtins.def. gcc/brig/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * brigfrontend/brig-util.h (hsa_type_packed_p): Declared. * brigfrontend/brig-util.cc (hsa_type_packed_p): Moved here from removed gcc/hsa-common.c. libgomp/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * plugin/Makefrag.am: Remove configuration of HSA plugin. * aclocal.m4: Regenerated. * Makefile.in: Regenerated. * config.h.in: Regenerated. * configure: Regenerated. * plugin/configfrag.ac: Likewise. * plugin/hsa_ext_finalize.h: Removed. * plugin/plugin-hsa.c: Likewise. * testsuite/Makefile.in: Regenerated. * testsuite/lib/libgomp.exp (offload_target_to_openacc_device_type): Remove hsa case. (check_effective_target_hsa_offloading_selected_nocache): Removed (check_effective_target_hsa_offloading_selected): Likewise. (libgomp_init): Do not add -Wno-hsa to additional_flags. * testsuite/libgomp.hsa.c/alloca-1.c: Removed test. * testsuite/libgomp.hsa.c/bitfield-1.c: Likewise. * testsuite/libgomp.hsa.c/bits-insns.c: Likewise. * testsuite/libgomp.hsa.c/builtins-1.c: Likewise. * testsuite/libgomp.hsa.c/c.exp: Likewise. * testsuite/libgomp.hsa.c/complex-1.c: Likewise. * testsuite/libgomp.hsa.c/complex-align-2.c: Likewise. * testsuite/libgomp.hsa.c/formal-actual-args-1.c: Likewise. * testsuite/libgomp.hsa.c/function-call-1.c: Likewise. * testsuite/libgomp.hsa.c/get-level-1.c: Likewise. * testsuite/libgomp.hsa.c/gridify-1.c: Likewise. * testsuite/libgomp.hsa.c/gridify-2.c: Likewise. * testsuite/libgomp.hsa.c/gridify-3.c: Likewise. * testsuite/libgomp.hsa.c/gridify-4.c: Likewise. * testsuite/libgomp.hsa.c/memory-operations-1.c: Likewise. * testsuite/libgomp.hsa.c/pr69568.c: Likewise. * testsuite/libgomp.hsa.c/pr82416.c: Likewise. * testsuite/libgomp.hsa.c/rotate-1.c: Likewise. * testsuite/libgomp.hsa.c/staticvar.c: Likewise. * testsuite/libgomp.hsa.c/switch-1.c: Likewise. * testsuite/libgomp.hsa.c/switch-branch-1.c: Likewise. * testsuite/libgomp.hsa.c/switch-sbr-2.c: Likewise. * testsuite/libgomp.hsa.c/tiling-1.c: Likewise. * testsuite/libgomp.hsa.c/tiling-2.c: Likewise. gcc/testsuite/ChangeLog: 2020-07-24 Martin Jambor <mjambor@suse.cz> * lib/target-supports.exp (check_effective_target_offload_hsa): Removed. * c-c++-common/gomp/gridify-1.c: Removed test. * c-c++-common/gomp/gridify-2.c: Likewise. * c-c++-common/gomp/gridify-3.c: Likewise. * c-c++-common/gomp/hsa-indirect-call-1.c: Likewise. * gfortran.dg/gomp/gridify-1.f90: Likewise. * gcc.dg/gomp/gomp.exp: Do not pass -Wno-hsa to tests. * g++.dg/gomp/gomp.exp: Likewise. * gfortran.dg/gomp/gomp.exp: Likewise.
2020-08-03aarch64: Add support for unpacked sub [PR96366]Bu Le1-4/+4
The test case bb-slp-20.c in the gcc testsuit will cause an ICE in the expand pass due to the lack of a pattern for subtraction of the VNx2SI mode. This patch solve this problem by adding support for unpacked sub. gcc/ChangeLog: * config/aarch64/aarch64-sve.md (sub<mode>3): Add support for unpacked vectors.
2020-08-03testsuite: Add -Wno-psabi to gcc.dg/pr96377-[12].cRichard Sandiford2-2/+2
2020-08-03 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.dg/pr96377-1.c: Add -Wno-psabi. * gcc.dg/pr96377-2.c: Likewise.
2020-08-03MSP430: Don't pass redundant -md option to the assemblerJozef Lawrynowicz1-2/+0
The MSP430 GAS option "-md" is supposed to indicate that the CRT startup code should copy data from ROM to RAM at startup. However, this option has no effect; GAS handles the related behaviour automatically. gcc/ChangeLog: * config/msp430/msp430.h (ASM_SPEC): Don't pass on "-md" option.
2020-08-03regrename: Avoid disrupting SMS schedule [PR95696]Yunde Zhong2-4/+14
SMS is performed before reload, and each insn in SMS schedule uses pseudo-register. After reload, regrename pass try to adjust the hard registers with def/use chain created by build_def_use. For now, regrename pass isn't aware of VLIW bundles created by SMS, it may updated a register which may not be really unused, which will causes invalid VLIW bundles. Before the final schedule, we recheck the validation of VLIW bundles and reschedule the conflicted insns to avoid the above issue. Rescheduling the conflicted insns will destroy SMS schedule of the kernel loop, which would be harmful to performance. 2020-08-03 Yunde Zhong <zhongyunde@huawei.com> gcc/ PR rtl-optimization/95696 * regrename.c (regrename_analyze): New param include_all_block_p with default value TRUE. If set to false, avoid disrupting SMS schedule. * regrename.h (regrename_analyze): Adjust prototype.
2020-08-03lto/96385 - avoid unused global UNDEFs in debug objectsRichard Biener1-0/+5
Unused global UNDEFs can have side-effects in some circumstances so the following patch avoids them by treating them the same as other to be discarded DEFs - make them local. 2020-08-03 Richard Biener <rguenther@suse.de> PR lto/96385 libiberty/ * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Localize global UNDEFs and reuse the prevailing name.
2020-08-03doc: fix a typo in tm.texiWei Wentao2-2/+2
gcc/ * doc/tm.texi.in (VECTOR_STORE_FLAG_VALUE): Fix a typo. * doc/tm.texi: Regenerate.
2020-08-03doc: Add missing comma after octeontx2f95mmRichard Sandiford1-1/+1
gcc/ * doc/invoke.texi: Add missing comma after octeontx2f95mm entry.
2020-08-03aarch64: Add A64FX machine modelQian Jianhua4-1/+42
This patch add support for Fujitsu A64FX, as the first step of adding A64FX machine model. A64FX is used in FUJITSU Supercomputer PRIMEHPC FX1000, PRIMEHPC FX700, and supercomputer Fugaku. The official microarchitecture information of A64FX can be read at https://github.com/fujitsu/A64FX. 2020-08-03 Qian jianhua <qianjh@cn.fujitsu.com> gcc/ * config/aarch64/aarch64-cores.def (a64fx): New core. * config/aarch64/aarch64-tune.md: Regenerated. * config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New. * doc/invoke.texi: Add a64fx to the list.
2020-08-03PR rtl-optimization 61494: Preserve x-0.0 with HONOR_SNANS.Roger Sayle1-3/+4
The following patch avoids simplifying x-0.0 to x when -fsignaling-nans is specified, which resolves PR rtl-optimization 61494. Indeed, running the test program attached to that PR now reports no failures. 2020-08-02 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog PR rtl-optimization/61494 * simplify-rtx.c (simplify_binary_operation_1) [MINUS]: Don't simplify x - 0.0 with -fsignaling-nans.
2020-08-03genmatch: Avoid unused parameter warnings in generated code.Roger Sayle1-1/+29
This patch silences a number of unused parameter warnings whilst compiling both generic-match.c and gimple-match.c. The problem is that multiple (polymorphic) functions are generated for generic_simplify and gimple_simplify, each handling tree codes with a specific number of children. Currently, there are no simplifications for tree codes with four or five children, leading to functions with "empty" bodies and unused function arguments. This patch detects those cases, and generates stub functions (with anonymous arguments) to silence these warnings. 2020-08-03 Roger Sayle <roger@nextmovesoftware.com> gcc/ChangeLog * genmatch.c (decision_tree::gen): Emit stub functions for tree code operand counts that have no simplifications. (main): Correct comment typo.
2020-08-03tree-optimization: Fix typos in commentsJonathan Wakely1-16/+16
The only two changes which aren't obvious are s/dirified/specified/ and s/edirially/especially/ which appear to be caused by a s/spec/dir/ edit that went too far. gcc/ChangeLog: * gimple-ssa-sprintf.c: Fix typos in comments.
2020-08-03AArch64: Fix hwasan failure in readline.Tamar Christina1-2/+8
My previous fix added an unchecked call to fgets in the new function readline. fgets can fail when there's an error reading the file in which case it returns NULL. It also returns NULL when the next character is EOF. The EOF case is already covered by the existing code but the error case isn't. This fixes it by returning the empty string on error. Also I now use strnlen instead of strlen to make sure we never read outside the buffer. This was flagged by Matthew Malcomson during his hwasan work. gcc/ChangeLog: * config/aarch64/driver-aarch64.c (readline): Check return value fgets.
2020-08-03mark match.pd ! not implemented on GENERICRichard Biener2-4/+10
This makes us error when the ! operator modifier is encountered when not targeting GIMPLE. 2020-08-03 Richard Biener <rguenther@suse.de> * genmatch.c (parser::gimple): New. (parser::parser): Initialize gimple flag member. (parser::parse_expr): Error on ! operator modifier when not targeting GIMPLE. (main): Pass down gimple flag to parser ctor. * doc/match-and-simplify.texi: Amend accordingly.
2020-08-03d: Fix ICE using non-local variable: internal compiler error: Segmentation faultIain Buclaw5-22/+89
Moves no frame access error to own function, adding use of it for both when get_framedecl() cannot find a path to the outer function frame, and guarding get_decl_tree() from recursively calling itself. gcc/d/ChangeLog: PR d/96254 * d-codegen.cc (error_no_frame_access): New. (get_frame_for_symbol): Use fdparent name in error message. (get_framedecl): Replace call to assert with error. * d-tree.h (error_no_frame_access): Declare. * decl.cc (get_decl_tree): Detect recursion and error. gcc/testsuite/ChangeLog: PR d/96254 * gdc.dg/pr96254a.d: New test. * gdc.dg/pr96254b.d: New test.
2020-08-03libgfortran/caf/single.c: Fix typo.Tobias Burnus1-5/+6
libgfortran/ChangeLog * caf/single.c (_gfortran_caf_lock): Fix typo.
2020-08-03Fortran texi: Fix typosTobias Burnus4-11/+11
gcc/fortran/ChangeLog * gfc-internals.texi: Fix typos. * gfortran.texi: Likewise. * intrinsic.texi: Likewise. * invoke.texi: Likewise.
2020-08-03Multi-range implementation for value_range (irange).Aldy Hernandez15-1175/+2868
Implement class irange, a generic multi-range implementation for value ranges. This class is API compatible with value_range, and is meant to seamlessly coexist with it. gcc/ChangeLog: * Makefile.in (GTFILES): Move value-range.h up. * gengtype-lex.l: Set yylval to handle GTY markers on templates. * ipa-cp.c (initialize_node_lattices): Call value_range constructor. (ipcp_propagate_stage): Use in-place new so value_range construct is called. * ipa-fnsummary.c (evaluate_conditions_for_known_args): Use std vec instead of GCC's vec<>. (evaluate_properties_for_edge): Adjust for std vec. (ipa_fn_summary_t::duplicate): Same. (estimate_ipcp_clone_size_and_time): Same. * ipa-prop.c (ipa_get_value_range): Use in-place new for value_range. * ipa-prop.h (struct GTY): Remove class keyword for m_vr. * range-op.cc (empty_range_check): Rename to... (empty_range_varying): ...this and adjust for varying. (undefined_shift_range_check): Adjust for irange. (range_operator::wi_fold): Same. (range_operator::fold_range): Adjust for irange. Special case single pairs for performance. (range_operator::op1_range): Adjust for irange. (range_operator::op2_range): Same. (value_range_from_overflowed_bounds): Same. (value_range_with_overflow): Same. (create_possibly_reversed_range): Same. (range_true): Same. (range_false): Same. (range_true_and_false): Same. (get_bool_state): Adjust for irange and tweak for performance. (operator_equal::fold_range): Adjust for irange. (operator_equal::op1_range): Same. (operator_equal::op2_range): Same. (operator_not_equal::fold_range): Same. (operator_not_equal::op1_range): Same. (operator_not_equal::op2_range): Same. (build_lt): Same. (build_le): Same. (build_gt): Same. (build_ge): Same. (operator_lt::fold_range): Same. (operator_lt::op1_range): Same. (operator_lt::op2_range): Same. (operator_le::fold_range): Same. (operator_le::op1_range): Same. (operator_le::op2_range): Same. (operator_gt::fold_range): Same. (operator_gt::op1_range): Same. (operator_gt::op2_range): Same. (operator_ge::fold_range): Same. (operator_ge::op1_range): Same. (operator_ge::op2_range): Same. (operator_plus::wi_fold): Same. (operator_plus::op1_range): Same. (operator_plus::op2_range): Same. (operator_minus::wi_fold): Same. (operator_minus::op1_range): Same. (operator_minus::op2_range): Same. (operator_min::wi_fold): Same. (operator_max::wi_fold): Same. (cross_product_operator::wi_cross_product): Same. (operator_mult::op1_range): New. (operator_mult::op2_range): New. (operator_mult::wi_fold): Adjust for irange. (operator_div::wi_fold): Same. (operator_exact_divide::op1_range): Same. (operator_lshift::fold_range): Same. (operator_lshift::wi_fold): Same. (operator_lshift::op1_range): New. (operator_rshift::op1_range): New. (operator_rshift::fold_range): Adjust for irange. (operator_rshift::wi_fold): Same. (operator_cast::truncating_cast_p): Abstract out from operator_cast::fold_range. (operator_cast::fold_range): Adjust for irange and tweak for performance. (operator_cast::inside_domain_p): Abstract out from fold_range. (operator_cast::fold_pair): Same. (operator_cast::op1_range): Use abstracted methods above. Adjust for irange and tweak for performance. (operator_logical_and::fold_range): Adjust for irange. (operator_logical_and::op1_range): Same. (operator_logical_and::op2_range): Same. (unsigned_singleton_p): New. (operator_bitwise_and::remove_impossible_ranges): New. (operator_bitwise_and::fold_range): New. (wi_optimize_and_or): Adjust for irange. (operator_bitwise_and::wi_fold): Same. (set_nonzero_range_from_mask): New. (operator_bitwise_and::simple_op1_range_solver): New. (operator_bitwise_and::op1_range): Adjust for irange. (operator_bitwise_and::op2_range): Same. (operator_logical_or::fold_range): Same. (operator_logical_or::op1_range): Same. (operator_logical_or::op2_range): Same. (operator_bitwise_or::wi_fold): Same. (operator_bitwise_or::op1_range): Same. (operator_bitwise_or::op2_range): Same. (operator_bitwise_xor::wi_fold): Same. (operator_bitwise_xor::op1_range): New. (operator_bitwise_xor::op2_range): New. (operator_trunc_mod::wi_fold): Adjust for irange. (operator_logical_not::fold_range): Same. (operator_logical_not::op1_range): Same. (operator_bitwise_not::fold_range): Same. (operator_bitwise_not::op1_range): Same. (operator_cst::fold_range): Same. (operator_identity::fold_range): Same. (operator_identity::op1_range): Same. (class operator_unknown): New. (operator_unknown::fold_range): New. (class operator_abs): Adjust for irange. (operator_abs::wi_fold): Same. (operator_abs::op1_range): Same. (operator_absu::wi_fold): Same. (class operator_negate): Same. (operator_negate::fold_range): Same. (operator_negate::op1_range): Same. (operator_addr_expr::fold_range): Same. (operator_addr_expr::op1_range): Same. (pointer_plus_operator::wi_fold): Same. (pointer_min_max_operator::wi_fold): Same. (pointer_and_operator::wi_fold): Same. (pointer_or_operator::op1_range): New. (pointer_or_operator::op2_range): New. (pointer_or_operator::wi_fold): Adjust for irange. (integral_table::integral_table): Add entries for IMAGPART_EXPR and POINTER_DIFF_EXPR. (range_cast): Adjust for irange. (build_range3): New. (range3_tests): New. (widest_irange_tests): New. (multi_precision_range_tests): New. (operator_tests): New. (range_tests): New. * range-op.h (class range_operator): Adjust for irange. (range_cast): Same. * tree-vrp.c (range_fold_binary_symbolics_p): Adjust for irange and tweak for performance. (range_fold_binary_expr): Same. (masked_increment): Change to extern. * tree-vrp.h (masked_increment): New. * tree.c (cache_wide_int_in_type_cache): New function abstracted out from wide_int_to_tree_1. (wide_int_to_tree_1): Cache 0, 1, and MAX for pointers. * value-range-equiv.cc (value_range_equiv::deep_copy): Use kind method. (value_range_equiv::move): Same. (value_range_equiv::check): Adjust for irange. (value_range_equiv::intersect): Same. (value_range_equiv::union_): Same. (value_range_equiv::dump): Same. * value-range.cc (irange::operator=): Same. (irange::maybe_anti_range): New. (irange::copy_legacy_range): New. (irange::set_undefined): Adjust for irange. (irange::swap_out_of_order_endpoints): Abstract out from set(). (irange::set_varying): Adjust for irange. (irange::irange_set): New. (irange::irange_set_anti_range): New. (irange::set): Adjust for irange. (value_range::set_nonzero): Move to header file. (value_range::set_zero): Move to header file. (value_range::check): Rename to... (irange::verify_range): ...this. (value_range::num_pairs): Rename to... (irange::legacy_num_pairs): ...this, and adjust for irange. (value_range::lower_bound): Rename to... (irange::legacy_lower_bound): ...this, and adjust for irange. (value_range::upper_bound): Rename to... (irange::legacy_upper_bound): ...this, and adjust for irange. (value_range::equal_p): Rename to... (irange::legacy_equal_p): ...this. (value_range::operator==): Move to header file. (irange::equal_p): New. (irange::symbolic_p): Adjust for irange. (irange::constant_p): Same. (irange::singleton_p): Same. (irange::value_inside_range): Same. (irange::may_contain_p): Same. (irange::contains_p): Same. (irange::normalize_addresses): Same. (irange::normalize_symbolics): Same. (irange::legacy_intersect): Same. (irange::legacy_union): Same. (irange::union_): Same. (irange::intersect): Same. (irange::irange_union): New. (irange::irange_intersect): New. (subtract_one): New. (irange::invert): Adjust for irange. (dump_bound_with_infinite_markers): New. (irange::dump): Adjust for irange. (debug): Add irange versions. (range_has_numeric_bounds_p): Adjust for irange. (vrp_val_max): Move to header file. (vrp_val_min): Move to header file. (DEFINE_INT_RANGE_GC_STUBS): New. (DEFINE_INT_RANGE_INSTANCE): New. * value-range.h (class irange): New. (class int_range): New. (class value_range): Rename to a instantiation of int_range. (irange::legacy_mode_p): New. (value_range::value_range): Remove. (irange::kind): New. (irange::num_pairs): Adjust for irange. (irange::type): Adjust for irange. (irange::tree_lower_bound): New. (irange::tree_upper_bound): New. (irange::type): Adjust for irange. (irange::min): Same. (irange::max): Same. (irange::varying_p): Same. (irange::undefined_p): Same. (irange::zero_p): Same. (irange::nonzero_p): Same. (irange::supports_type_p): Same. (range_includes_zero_p): Same. (gt_ggc_mx): New. (gt_pch_nx): New. (irange::irange): New. (int_range::int_range): New. (int_range::operator=): New. (irange::set): Moved from value-range.cc and adjusted for irange. (irange::set_undefined): Same. (irange::set_varying): Same. (irange::operator==): Same. (irange::lower_bound): Same. (irange::upper_bound): Same. (irange::union_): Same. (irange::intersect): Same. (irange::set_nonzero): Same. (irange::set_zero): Same. (irange::normalize_min_max): New. (vrp_val_max): Move from value-range.cc. (vrp_val_min): Same. * vr-values.c (vr_values::get_lattice_entry): Call value_range constructor.
2020-08-03d: Merge upstream dmd c2274e56a (PR96250).Iain Buclaw13-4/+129
1. Fixes an ICE in the front-end if a struct symbol were to appear twice in the compilation unit. 2. Fixes a rejects-valid bug in the front-end where `(symbol)' was being resolved as a `var' expression, instead of `this.var'. Reviewed-on: https://github.com/dlang/dmd/pull/11436 https://github.com/dlang/dmd/pull/11439 gcc/d/ChangeLog: PR d/96250 * dmd/MERGE: Merge upstream dmd c2274e56a.
2020-08-03Daily bump.GCC Administrator4-1/+33
2020-08-02var-tracking: fix uninitialised use of 'in_pending' [PR96404]Sergei Trofimovich1-0/+1
r11-2447-g:1212cfad093 ("Improve var-tracking dataflow iteration order") changed 'in_pending' initialization from: in_pending = sbitmap_alloc (last_basic_block_for_fn (cfun)); bitmap_ones (in_pending); to more complex partial bit population algorithm. Due to presence of uninitialized bits gcc started injecting extra debug entries in seemigly arbitrary locations and started failing stage2/stage3 bootstrap comparison. valgrind detected unilitialized bits as: Conditional jump or move depends on uninitialised value(s) at 0xDBED3B: vt_find_locations() (var-tracking.c:7230) by 0xDBF2FB: variable_tracking_main_1() (var-tracking.c:10519) ... Uninitialised value was created by a heap allocation at 0x483779F: malloc (vg_replace_malloc.c:307) by 0x14EE80B: xmalloc (xmalloc.c:147) by 0x14911F9: sbitmap_alloc(unsigned int) (sbitmap.c:51) ... The fix explicitly initializes 'in_pending' bitmap with zeros. 2020-08-02 Sergei Trofimovich <siarheit@google.com> gcc/ PR bootstrap/96404 * var-tracking.c (vt_find_locations): Fully initialize all 'in_pending' bits.
2020-08-02Update ChangeLogs for PR96320Paul Thomas2-0/+13
2020-08-02This patch fixes PR96320. See the explanatory comment in the testcase.Paul Thomas2-3/+79
2020-08-01 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR target/96320 * interface.c (gfc_check_dummy_characteristics): If a module procedure arrives with assumed shape in the interface and deferred shape in the procedure itself, update the latter and copy the lower bounds. gcc/testsuite/ PR target/96320 * gfortran.dg/module_procedure_4.f90 : New test.
2020-08-02Update ChangeLogs for PR96325Paul Thomas2-2/+15