aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-28Only allocate a single chunk of memory on startup.devel/coarray_nativeNicolas Koenig
2021-10-04Take memory from envirnoment variables; document those.Thomas Koenig
2021-09-24Install libcaf_shared libraries in the same directory as libgfortran.Thomas Koenig
2021-09-24Add correct link flags to libgfortran.spec.in.Thomas Koenig
Removed extraneous HUHU.
2021-09-13Merged current trunk to branch.Thomas Koenig
2021-01-17Use an initial shared memory size of 256 GB on Apple.Thomas Koenig
This implements an idea that Nicolas had to overcome the Darwin problem that it is not possible to extend a shared memory segment on that system. The remedy is simple: Use a memory segment that is larger than what can reasonably be used. This should only waste a few page table entries, while providing the functionality, at least for further testing. libgfortran/ChangeLog: * caf_shared/shared_memory.c (shared_memory_init): On Apple, use an initial size of 256 GB.
2021-01-17Add test cases for atomic subroutines, remove atomics from TODO.Thomas Koenig
libgfortran/ChangeLog: * caf_shared/README.native_coarrays: Remove atomics from list of unsupported features.
2021-01-10Add error checking to mutexes and condition variables.Thomas Koenig
After the discussions about PTHREAD_PROCESS_SHARED and after observing that on Cygwin the program simply hangs because this flag is not implemented there, the best way is to check for errors and exit with a clear error message instead of some mysterious hang. libgfortran/ChangeLog: * caf_shared/util.c (ERRCHECK): New macro. (initialize_shared_mutex): Use it to check return codes. (initialize_shared_condition): Likewise.
2021-01-05Fix CO_REDUCE with RESULT_IMAGE.Thomas Koenig
gcc/fortran/ChangeLog: * trans-array.c (gfc_conv_ss_descriptor): Use correct ref. * trans-intrinsic.c (trans_argument): Use gfc_conv_expr_reference. * trans-decl.c (gfc_build_builtin_function_decls): Correct spec for array. libgfortran/ChangeLog: * caf_shared/collective_subroutine.c (collsub_reduce_array): Fix off by one error for result. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/co_reduce_1.f90: New test.
2021-01-03Merge branch 'master' into devel/coarray_nativeThomas Koenig
2021-01-01Make SYNC IMAGES(*) work by handling size of -1 in library.Thomas Koenig
libgfortran/ChangeLog: * caf_shared/sync.c (sync_table): Change size argument and index to int. * caf_shared/sync.h (sync_table): Adjust prototype. * caf_shared/wrapper.c (cas_sync_images): Add s argument to int, adjust call to sync_table. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/sync_images_1.f90: New test. * gfortran.dg/caf-shared/sync_images_2.f90: New test.
2020-12-31match.pd: Add clz(X) == 0 -> (int)X < 0 etc. simpifications [PR94802]Jakub Jelinek
The following patch adds some clz simplifications. If clz is 0, then the MSB of the argument is set, and if clz is prec-1, then the argument is 1. 2020-12-31 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94802 * match.pd (clz(X) == 0 -> (int)X < 0): New simplification. (clz(X) == (prec-1) -> X == 1): Likewise. * gcc.dg/tree-ssa/pr94802-1.c: New test.
2020-12-31match.pd: Add (-(X < 0) | 1) * X -> abs (X) etc. simplifications [PR94785]Jakub Jelinek
The following patch adds two simplifications to recognize idioms for ABS_EXPR resp. ABSU_EXPR. 2020-12-31 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94785 * match.pd ((-(X < 0) | 1) * X -> abs (X)): New simplification. ((-(X < 0) | 1U) * X -> absu (X)): Likewise. * gcc.dg/tree-ssa/pr94785.c: New test.
2020-12-31wide-int: Fix wi::to_mpz [PR98474]Jakub Jelinek
The following testcase is miscompiled, because niter analysis miscomputes the number of iterations to 0. The problem is that niter analysis uses mpz_t (wonder why, wouldn't widest_int do the same job?) and when wi::to_mpz is called e.g. on the TYPE_MAX_VALUE of __uint128_t, it initializes the mpz_t result with wrong value. wi::to_mpz has code to handle negative wide_ints in signed types by inverting all bits, importing to mpz and complementing it, which is fine, but doesn't handle correctly the case when the wide_int's len (times HOST_BITS_PER_WIDE_INT) is smaller than precision when wi::neg_p. E.g. the 0xffffffffffffffffffffffffffffffff TYPE_MAX_VALUE is represented in wide_int as 0xffffffffffffffff len 1, and wi::to_mpz would create 0xffffffffffffffff mpz_t value from that. This patch handles it by adding the needed -1 host wide int words (and has also code to deal with precision that aren't multiple of HOST_BITS_PER_WIDE_INT). 2020-12-31 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/98474 * wide-int.cc (wi::to_mpz): If wide_int has MSB set, but type is unsigned and excess negative, append set bits after len until precision. * gcc.c-torture/execute/pr98474.c: New test.
2020-12-31fold-const: Avoid (cast) ((cast2) x p+ y) folding for -fsanitize=alignment ↵Jakub Jelinek
[PR98206] The following testcase is diagnosed by UBSan as invalid, even when it is valid. We have a derived type Base2 at offset 1 with alignment 1 and do: (const Derived &) ((const Base2 *) this + -1) but the folder before ubsan in the FE gets a chance to instrument it optimizes that into: (const Derived &) this + -1 and so we require that this has 8-byte alignment which Derived class needs. Fixed by avoiding such an optimization when -fsanitize=alignment is in effect if it would affect the alignments (and guarded with !in_gimple_form because we don't really care during GIMPLE, though pointer conversions are useless then and so such folding isn't needed very much during GIMPLE). 2020-12-31 Jakub Jelinek <jakub@redhat.com> PR c++/98206 * fold-const.c: Include asan.h. (fold_unary_loc): Don't optimize (ptr_type) (((ptr_type2) x) p+ y) into ((ptr_type) x) p+ y if sanitizing alignment in GENERIC and ptr_type points to type with higher alignment than ptr_type2. * g++.dg/ubsan/align-4.C: New test.
2020-12-31reassoc: Optimize x > 0x1fff || y > 0x1fff into (x | y) > 0x1fff [PR56719]Jakub Jelinek
The following patch adds an optimization mentioned in PR56719 #c8. We already have the x != 0 && y != 0 && z != 0 into (x | y | z) != 0 and x != -1 && y != -1 && y != -1 into (x & y & z) != -1 optimizations, this patch just extends that to x < C && y < C && z < C for power of two constants C into (x | y | z) < C (for unsigned comparisons). I didn't want to create too many buckets (there can be TYPE_PRECISION such constants), so the patch instead just uses one buckets for all such constants and loops over that bucket up to TYPE_PRECISION times. 2020-12-31 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/56719 * tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Also optimize x < C && y < C && z < C when C is a power of two constant into (x | y | z) < C. * gcc.dg/tree-ssa/pr56719.c: New test.
2020-12-31d: Mangled Symbols now back reference types and identifiersIain Buclaw
Symbols with extern(D) linkage are now mangled using back references to types and identifiers if these occur more than once in the mangled name as emitted before. This reduces symbol length, especially with chained expressions of templated functions with Voldemort return types. For example, the average symbol length of the 127000+ symbols created by a libphobos unittest build is reduced by a factor of about 3, while the longest symbol shrinks from 416133 to 1142 characters. Reviewed-on: https://github.com/dlang/dmd/pull/12079 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 2bd4fc3fe.
2020-12-31Daily bump.GCC Administrator
2020-12-30libgo: update to Go1.16beta1 releaseIan Lance Taylor
This does not yet include support for the //go:embed directive added in this release. * Makefile.am (check-runtime): Don't create check-runtime-dir. (mostlyclean-local): Don't remove check-runtime-dir. (check-go-tool, check-vet): Copy in go.mod and modules.txt. (check-cgo-test, check-carchive-test): Add go.mod file. * Makefile.in: Regenerate. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280172
2020-12-30Make STAT and ERRMSG work on ALLOCATE, move error handling to library.Thomas Koenig
This makes STAT and ERRMSG work on ALLOCATE. It also separates the allocation of coarrays into two functions: One without error checking, which is called by compiler-generated code, and one with error checking for call from user code. In the course of looking at this, it was also noticed that allocatable coarrays were not automatically deallocated; this is now also fixed. Also, saved allocatable coarrays are now saved. gcc/fortran/ChangeLog: * trans-array.c (gfc_allocate_shared_coarray): Remove extra arguments, just build the call. (allocate_shared_coarray_chk): New function. (gfc_array_allocate): Adjust where to set the offset. Error handling is done in the library for shared coarrays. (gfc_trans_deferred_array): No early return for allocatable shared coarrays. * trans-array.h (gfc_array_allocate): Adjust prototype. (gfc_allocate_shared_coarray): Likewise. * trans-decl.c: Rename gfor_fndecl_cas_coarray_allocate to gfor_fndecl_cas_coarray_alloc for brevity. Add gfor_fndecl_cas_coarray_alloc_chk. (gfc_build_builtin_function_decls): Likewise. (gfc_trans_shared_coarray): Adjust calling sequence for gfc_allocate_shared_coarray. (gfc_trans_deferred_vars): Correct handling of saved allocatable shared coarrays. * trans-stmt.c (gfc_trans_sync): Adjust whitespace.o (coarray_alloc_p): Remove. (gfc_trans_allocate): Add shared_coarray variable to adjust status and errmsg handling. * trans.h: Rename gfor_fndecl_cas_coarray_allocate to gfor_fndecl_cas_coarray_alloc for brevity. Add gfor_fndecl_cas_coarray_alloc_chk. libgfortran/ChangeLog: * caf_shared/coarraynative.c (test_for_cas_errors): Correct handling of stat. * caf_shared/libcoarraynative.h (STAT_ERRMSG_ENTRY_CHECK): Use unlikely in condition. (STAT_ERRMSG_ENTRY_CHECK_RET): Likewise. * caf_shared/wrapper.c (cas_coarray_alloc): Adjust arguments. Call cas_coarray_alloc_work. (cas_coarray_alloc_chk): New function. (cas_coarray_alloc_work): New function. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/allocate_1.f90: Adjust number of calls to sync_all. * gfortran.dg/caf-shared/allocate_status_1.f90: New test. * gfortran.dg/caf-shared/automatic_deallocate_1.f90: New test. * gfortran.dg/caf-shared/save_allocatable_1.f90: New test.
2020-12-30i386: Remove unnecessary clobbers from combine splitters.Uros Bizjak
There is no need for combine splitters to emit insn patterns with clobbers, the pass is smart enough to add clobbers to patterns as necessary. 2020-12-30 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386.md: Remove unnecessary clobbers from combine splitters.
2020-12-30d: Simplify quoting characters in deps_add_targetIain Buclaw
The implementation in d-lang.cc was based on what was present in libcpp. This synchronizes the escaping logic to match the current version. gcc/d/ChangeLog: * d-lang.cc (deps_add_target): Handle quoting ':' character. Reimplement backslash tracking.
2020-12-30d: Give the result of evaluated expressions a locationIain Buclaw
CST trees that were converted back to a D front-end AST node lost all location information of the original expression. Now this is propagated on to the literal expression. gcc/d/ChangeLog: * d-tree.h (d_eval_constant_expression): Add location argument. * d-builtins.cc (d_eval_constant_expression): Give generated constants a proper file location. * d-compiler.cc (Compiler::paintAsType): Pass expression location to d_eval_constant_expression. * d-frontend.cc (eval_builtin): Likewise.
2020-12-30i386: Optimize pmovmskb on inverted vector to inversion of pmovmskb result ↵Jakub Jelinek
[PR98461] The following patch adds combine splitters to optimize: - vpcmpeqd %ymm1, %ymm1, %ymm1 - vpandn %ymm1, %ymm0, %ymm0 vpmovmskb %ymm0, %eax + notl %eax etc. (for vectors with less than 32 elements with xorl instead of notl). 2020-12-30 Jakub Jelinek <jakub@redhat.com> PR target/98461 * config/i386/sse.md (<sse2_avx2>_pmovmskb): Add splitters for pmovmskb of NOT vector. * gcc.target/i386/sse2-pr98461.c: New test. * gcc.target/i386/avx2-pr98461.c: New test.
2020-12-30Daily bump.GCC Administrator
2020-12-29Fortran: Correct missing structure constructor comps. [PR97612].Paul Thomas
2020-12-29 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/97612 * primary.c (build_actual_constructor): Missing allocatable components are set unallocated using EXPR_NULL. Then missing components are tested for a default initializer. gcc/testsuite/ PR fortran/97612 * gfortran.dg/structure_constructor_17.f90: New test.
2020-12-29Fortran: Fix deferred character lengths in array constructors [PR93833].Paul Thomas
2020-12-29 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/93833 * trans-array.c (get_array_ctor_var_strlen): If the character length backend_decl cannot be found, convert the expression and use the string length. Clear up some minor white space issues in the rest of the file. gcc/testsuite/ PR fortran/93833 * gfortran.dg/deferred_character_36.f90 : New test.
2020-12-29arc: generate mac(u) insn instead of macd(u) when destination is acclClaudiu Zissulescu
Generate MAC(U) instruction instead of MACD(U) when the destination register is already choosen as ACCL register. gcc/ 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (maddsidi4_split): Skip macd gen, use mac insn instead. (macd): Update register letters. (umaddsidi4_split): Skip macdu gen, use macu insn instead. (macdu): Update register letters. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29arc: flip if-condition predicates in secondary reload hookClaudiu Zissulescu
The ARC code contains code which should only work with the old reload pass. Such code is found in arc_secondary_reload hook, however it was not properly quarded. Reverse the if-condition predicate such that req_equiv_mem is called when lra is not in progress. gcc/ 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (arc_secondary_reload): Flip if-condition predicates. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29arc: Make use reg_renumber safe.Claudiu Zissulescu
The REGNO_OK_FOR_BASE_P is using reg_renumber array. However, it is not always defined. Use it only when it is defined. gcc/ 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined reg_renumber. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29arc: Update test pattern.Claudiu Zissulescu
gcc/testsuite 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/loop-3.c: Update test pattern. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29arc: Fix cached to uncached moves.Claudiu Zissulescu
We need an temporary register when moving data from a cached memory to an uncached memory. Fix this issue and add a test for it. gcc/ 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (prepare_move_operands): Use a temporary registers when we have cached mem-to-uncached mem moves. gcc/testsuite/ 2020-12-29 Vladimir Isaev <isaev@synopsys.com> * gcc.target/arc/uncached-9.c: New test. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29arc: Don't use predicated vadd2 instructions in mov patterns.Claudiu Zissulescu
Update movdi, movdf and mov vectors not to use predicated vadd2 instructions. vadd2 is used as a "fast" move in these patterns. This fixes a number of failures in dejagnu. gcc/ 2020-12-29 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (movdi_insn): Update pattern, no predicated vadd2 usage. (movdf_insn): Likewise. * config/arc/simdext.md (movVEC_insn): Likewise. Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2020-12-29i386: Rounding functions TLCUros Bizjak
Use copy_to_reg where appropriate, use int_mode_for_mode and fix comment indentation. 2020-12-29 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386-expand.c (ix86_gen_TWO52): Use REAL_MODE_FORMAT to determine number of mantissa bits. Use real_2expN instead of real_ldexp. (ix86_expand_rint): Use copy_to_reg. (ix86_expand_floorceildf_32): Ditto. (ix86_expand_truncdf_32): Ditto. (ix86_expand_rounddf_32): Ditto. (ix86_expand_floorceil): Use copy_to_reg and int_mode_for_mode. (ix86_expand_trunc): Ditto. (ix86_expand_round): Ditto.
2020-12-29Daily bump.GCC Administrator
2020-12-28libgomp: Avoid bad "up" link in libgomp docsGerald Pfeifer
The libgomp texinfo docs lead to an invalid "up" link on the Top node, which we can avoid similarly to the Top link in the main GCC manual. 2020-12-28 Sandra Loosemore <sandra@codesourcery.com> libgomp/ * libgomp.texi (Top): Avoid bad "up" link.
2020-12-28doc: Remove HSAIL from Language StandardsGerald Pfeifer
Support for HSAIL has been deprecated with GCC 10 and their web server has been down for weeks. gcc/ 2020-12-28 Gerald Pfeifer <gerald@pfeifer.com> * doc/standards.texi (HSAIL): Remove section.
2020-12-28i386: Fix __builtin_rint with FE_DOWNWARD rounding direction [PR96793]Uros Bizjak
x86_expand_rint expander uses x86_sse_copysign_to_positive, which is unable to change the sign from - to +. When FE_DOWNWARD rounding direction is in effect, the expanded sequence that involves subtraction can trigger x - x = -0.0 special rule. x86_sse_copysign_to_positive fails to change the sign of the intermediate value, assumed to always be positive, back to positive. The patch adds one extra fabs that strips the sign from the intermediate value when flag_rounding_math is in effect. 2020-12-28 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/96793 * config/i386/i386-expand.c (ix86_expand_rint): Remove the sign of the intermediate value for flag_rounding_math. gcc/testsuite/ PR target/96793 * gcc.target/i386/pr96793-2.c: New test.
2020-12-28i386: Use existing temporary register in rounding functionsUros Bizjak
It is possible to avoid the call to force_reg and use existing temporary register in ix86_expand_trunc, ix86_expand_round and ix86_expand_rounddf_32 expanders. 2020-12-28 Uroš Bizjak <ubizjak@gmail.com> gcc/ * config/i386/i386-expand.c (ix86_expand_trunc): Use existing temporary register to avoid a call to force_reg.
2020-12-28Fix standard name for zero/sign extend expandersHongyu Wang
gcc/ChangeLog: * config/i386/i386.md (optab): New code attr. * config/i386/sse.md (<code>v32qiv32hi2): Rename to ... (<optab>v32qiv32hi2) ... this. (<code>v16qiv16hi2): Likewise. (<code>v8qiv8hi2): Likewise. (<code>v16qiv16si2): Likewise. (<code>v8qiv8si2): Likewise. (<code>v4qiv4si2): Likewise. (<code>v16hiv16si2): Likewise. (<code>v8hiv8si2): Likewise. (<code>v4hiv4si2): Likewise. (<code>v8qiv8di2): Likewise. (<code>v4qiv4di2): Likewise. (<code>v2qiv2di2): Likewise. (<code>v8hiv8di2): Likewise. (<code>v4hiv4di2): Likewise. (<code>v2hiv2di2): Likewise. (<code>v8siv8di2): Likewise. (<code>v4siv4di2): Likewise. (<code>v2siv2di2): Likewise. gcc/testsuite/ChangeLog: * gcc.target/i386/pr92658-avx2-2.c: New test. * gcc.target/i386/pr92658-avx512bw-2.c: Likewise. * gcc.target/i386/pr92658-sse4-2.c: Likewise.
2020-12-28Daily bump.GCC Administrator
2020-12-27doc: New source for "Memory Model for Static Analysis" paperGerald Pfeifer
gcc: 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> * doc/analyzer.texi (Analyzer Internals): Find a new source for the "A Memory Model for Static Analysis of C Programs" paper.
2020-12-27libstdc++: Update link to Arm ABIGerald Pfeifer
libstdc++-v3: 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/abi.xml: Update link to Arm ABI. * doc/html/manual/abi.html: Regenerate.
2020-12-27Fix regressions for iq2000-elf after recent changesJeff Law
gcc/testsuite * gcc.dg/tree-ssa/asm-2.c: Use different register for iq2000. * gcc.dg/tree-ssa/asm-3.c: Likewise.
2020-12-27Fix for broken MacOS limitation for name length of shm_open.Thomas Koenig
libgfortran/ChangeLog: * caf_shared/util.c (CUT_INT): New macro. (MEMOBJ_NAME): Set to something short if __APPLE__ is defined. (get_shmem_fd): Exit on any error but EEXIST.
2020-12-27Fix errors introduced by last commit.Thomas Koenig
gcc/fortran/ChangeLog: * trans-array.c (gfc_conv_array_ref): Before discarding offset, check if this is a coarray and we are building shared coarrays. * trans-decl.c (gfc_build_builtin_function_decls): Clear up types for cas_coarray_allocate. (gfc_trans_shared_coarray): Pass NULL_TREEs to status and errmsg. libgfortran/ChangeLog: * caf_shared/util.h (CAS_DEBUG_PR): New macro. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/cas.exp: Add -g to debug flags to allow better backtrace.
2020-12-27Fortran: Fix some select rank issues [PR97694 and 97723].Paul Thomas
2020-12-27 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/97694 PR fortran/97723 * check.c (allocatable_check): Select rank temporaries are permitted even though they are treated as associate variables. * resolve.c (gfc_resolve_code): Break on select rank as well as select type so that the block os resolved. * trans-stmt.c (trans_associate_var): Class associate variables that are optional dummies must use the backend_decl. gcc/testsuite/ PR fortran/97694 PR fortran/97723 * gfortran.dg/select_rank_5.f90: New test.
2020-12-27libstdc++: Move Valgrind references to httpsGerald Pfeifer
libstdc++-v3: 2020-12-27 Gerald Pfeifer <gerald@pfeifer.com> * doc/xml/manual/debug.xml: Move Valgrind references to https. * doc/html/manual/debug.html: Regenerate.
2020-12-27Daily bump.GCC Administrator
2020-12-26Objective-C++ : Fix up testcase EOF diagnostics.Iain Sandoe
Some Objective-C++ testcases need modification in reponse to the solution to PR 96045. gcc/testsuite/ChangeLog: PR c++/96045 * obj-c++.dg/property/property-neg-6.mm: Adjust EOF diagnostic location. * obj-c++.dg/syntax-error-10.mm: Likewise. * obj-c++.dg/syntax-error-8.mm: Likewise. * obj-c++.dg/syntax-error-9.mm: Likewise.