aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-04-21aarch64: Always use .init/.fini_array for GNU/LinuxRichard Sandiford2-4/+24
I was wondering why the (now fixed) c-c++-common/attr-retain-[78].c failures were showing up in the native results for aarch64-linux-gnu but not in the posted cross results. It turns out that .init/ .fini_array support is disabled by default for cross builds, which in turn stops those tests from running. The test for .init/fini_array support has two parts: one that builds something with the assembler and linker, and another that compiles C code and uses preprocessor macros to test the glibc version. The first test would work with build=host but the second is only safe for build=target. However, AArch64 postdates glibc and binutils support for .init/fini_array by some distance, so it's safe to hard-code the result to "yes" for cross compilers. This fixes the only material difference in auto-host.h between a native and a cross build. gcc/ * acinclude.m4 (gcc_AC_INITFINI_ARRAY): When cross-compiling, default to yes for aarch64-linux-gnu. * configure: Regenerate.
2021-04-21Use std::thread::hardware_concurrency in lto-wrapper.c.Martin Liska1-108/+5
gcc/ChangeLog: * lto-wrapper.c (cpuset_popcount): Remove. (init_num_threads): Remove and use hardware_concurrency.
2021-04-21Fix clang warnings.Martin Liska3-9/+20
gcc/ChangeLog: * config/i386/i386.c: Remove superfluous || TARGET_MACHO which remains to be '(... || 0)' and clang complains about it. * dwarf2out.c (AT_vms_delta): Declare conditionally. (add_AT_vms_delta): Likewise. * tree.c (fld_simplified_type): Use rather more common pattern for disabling of something (#if 0). (get_tree_code_name): Likewise. (verify_type_variant): Likewise.
2021-04-21Remove TARGET_foo (ix86_tune == PROCESSOR_foo) macros.Martin Liska7-63/+23
gcc/ChangeLog: * config/i386/i386-expand.c (decide_alignment): Use newly named macro TARGET_CPU_P. * config/i386/i386.c (ix86_decompose_address): Likewise. (ix86_address_cost): Likewise. (ix86_lea_outperforms): Likewise. (ix86_avoid_lea_for_addr): Likewise. (ix86_add_stmt_cost): Likewise. * config/i386/i386.h (TARGET_*): Remove. (TARGET_CPU_P): New macro. * config/i386/i386.md: Use newly named macro TARGET_CPU_P. * config/i386/x86-tune-sched-atom.c (do_reorder_for_imul): Likewise. (swap_top_of_ready_list): Likewise. (ix86_atom_sched_reorder): Likewise. * config/i386/x86-tune-sched-bd.c (ix86_bd_has_dispatch): Likewise. * config/i386/x86-tune-sched.c (ix86_adjust_cost): Likewise.
2021-04-21Overhaul in isa_flags and handling it.Martin Liska3-463/+45
gcc/ChangeLog: * config/i386/i386-options.c (TARGET_EXPLICIT_NO_SAHF_P): Define. (SET_TARGET_NO_SAHF): Likewise. (TARGET_EXPLICIT_PREFETCH_SSE_P): Likewise. (SET_TARGET_PREFETCH_SSE): Likewise. (TARGET_EXPLICIT_NO_TUNE_P): Likewise. (SET_TARGET_NO_TUNE): Likewise. (TARGET_EXPLICIT_NO_80387_P): Likewise. (SET_TARGET_NO_80387): Likewise. (DEF_PTA): New. * config/i386/i386.h (TARGET_*): Remove. * opth-gen.awk: Generate new used macros.
2021-04-21Generate PTA features from a def file.Martin Liska2-91/+128
gcc/ChangeLog: * config/i386/i386.h (PTA_*): Remove. (enum pta_flag): New. (DEF_PTA): Generate PTA_* values from i386-isa.def. * config/i386/i386-isa.def: New file.
2021-04-21aarch64: Avoid duplicating bti j insns for jump tables [PR99988]Alex Coplan2-0/+81
This patch fixes PR99988 which shows us generating large (> 250) sequences of back-to-back bti j instructions. The fix is simply to avoid inserting bti j instructions at the target of a jump table if we've already inserted one for a given label. gcc/ChangeLog: PR target/99988 * config/aarch64/aarch64-bti-insert.c (aarch64_bti_j_insn_p): New. (rest_of_insert_bti): Avoid inserting duplicate bti j insns for jump table targets. gcc/testsuite/ChangeLog: PR target/99988 * gcc.target/aarch64/pr99988.c: New test.
2021-04-21testsuite: Add -fchecking to dg-ice testsJakub Jelinek7-2/+7
In --enable-checking=release builds (which is the default on release branches), I'm getting various extra FAILs that don't appear in --enable-checking=yes builds. XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (internal compiler error) FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++14 (test for excess errors) XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (internal compiler error) FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++17 (test for excess errors) XPASS: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (internal compiler error) FAIL: g++.dg/cpp0x/constexpr-52830.C -std=c++2a (test for excess errors) FAIL: g++.dg/cpp0x/vt-88982.C -std=c++14 (test for excess errors) FAIL: g++.dg/cpp0x/vt-88982.C -std=c++17 (test for excess errors) FAIL: g++.dg/cpp0x/vt-88982.C -std=c++2a (test for excess errors) FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++14 (test for excess errors) FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++17 (test for excess errors) FAIL: g++.dg/cpp1y/auto-fn61.C -std=c++2a (test for excess errors) FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++17 (test for excess errors) FAIL: g++.dg/cpp1z/constexpr-lambda26.C -std=c++2a (test for excess errors) FAIL: g++.dg/cpp2a/nontype-class39.C -std=c++2a (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++14 (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++17 (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++2a (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-1.c -std=c++98 (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++14 (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++17 (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++2a (test for excess errors) FAIL: c-c++-common/goacc/kernels-decompose-ice-2.c -std=c++98 (test for excess errors) These are tests that have dg-ice and most of those ICEs are checking ICEs which go away in release checking when -fno-checking is the default. The following patch adds -fchecking option to those. 2021-04-21 Jakub Jelinek <jakub@redhat.com> * g++.dg/cpp1z/constexpr-lambda26.C: Add dg-additional-options -fchecking. * g++.dg/cpp1y/auto-fn61.C: Likewise. * g++.dg/cpp2a/nontype-class39.C: Likewise. * g++.dg/cpp0x/constexpr-52830.C: Likewise. * g++.dg/cpp0x/vt-88982.C: Likewise. * c-c++-common/goacc/kernels-decompose-ice-1.c: Add -fchecking to dg-additional-options. * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise.
2021-04-21x86: Add -mmwait for -mgeneral-regs-onlyH.J. Lu13-19/+130
Add -mmwait so that the MWAIT and MONITOR intrinsics can be used with -mgeneral-regs-only and make -msse3 to imply -mmwait. gcc/ * config.gcc: Install mwaitintrin.h for i[34567]86-*-* and x86_64-*-* targets. * common/config/i386/i386-common.c (OPTION_MASK_ISA2_MWAIT_SET): New. (OPTION_MASK_ISA2_MWAIT_UNSET): Likewise. (ix86_handle_option): Handle -mmwait. * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Replace OPTION_MASK_ISA_SSE3 with OPTION_MASK_ISA2_MWAIT on __builtin_ia32_monitor and __builtin_ia32_mwait. * config/i386/i386-options.c (isa2_opts): Add -mmwait. (ix86_valid_target_attribute_inner_p): Likewise. (ix86_option_override_internal): Enable mwait/monitor instructions for -msse3. * config/i386/i386.h (TARGET_MWAIT): New. (TARGET_MWAIT_P): Likewise. * config/i386/i386.opt: Add -mmwait. * config/i386/mwaitintrin.h: New file. * config/i386/pmmintrin.h: Include <mwaitintrin.h>. * config/i386/sse.md (sse3_mwait): Replace TARGET_SSE3 with TARGET_MWAIT. (@sse3_monitor_<mode>): Likewise. * config/i386/x86gprintrin.h: Include <mwaitintrin.h>. * doc/extend.texi: Document mwait target attribute. * doc/invoke.texi: Document -mmwait. gcc/testsuite/ * gcc.target/i386/monitor-2.c: New test.
2021-04-21libstdc++: Fix whitespace in license boilerplateJonathan Wakely2-6/+6
libstdc++-v3/ChangeLog: * include/std/latch: Replace tab characters in license text. * include/std/semaphore: Likewise.
2021-04-21Remove DEF_ENUM from stringop.def.Martin Liska3-15/+0
gcc/ChangeLog: * config/i386/i386-options.c (DEF_ENUM): Remove it. * config/i386/i386-opts.h (DEF_ENUM): Likewise. * config/i386/stringop.def (DEF_ENUM): Likewise.
2021-04-21Revert "Use flags in dump_decl."Martin Liska1-1/+1
This reverts commit 9b6360b83cf5c684422c42301faee3a79ac42dc1.
2021-04-21Fix endian bug in rust demanglerAndreas Schwab1-3/+6
libiberty/ PR demangler/100177 * rust-demangle.c (demangle_const_char): Properly print the character value.
2021-04-21Use flags in dump_decl.Martin Liska1-1/+1
gcc/cp/ChangeLog: * error.c (dump_decl): Use flags in dump_generic_node call.
2021-04-21Support LABEL_DECL in %qD directive.Martin Liska2-20/+14
gcc/cp/ChangeLog: * error.c (dump_decl): Support anonymous labels. gcc/ChangeLog: * tree-cfg.c (gimple_verify_flow_info): Use qD instead of print_generic_expr.
2021-04-21testsuite/100176 - fix struct-layout-1_generate.c compileRichard Biener2-0/+4
With -Werror=return-type we run into compile fails complaining about missing return stmts. 2021-04-21 Richard Biener <rguenther@suse.de> PR testsuite/100176 * g++.dg/compat/struct-layout-1_generate.c: Add missing return. * gcc.dg/compat/struct-layout-1_generate.c: Likewise.
2021-04-21cprop: Fix -fcompare-debug bug in constprop_register [PR100148]Jakub Jelinek2-3/+32
The following testcase shows different behavior between -g and -g0 in constprop_register, if a flags register setter is separated from a conditional jump using those flags with -g by a DEBUG_INSN. As it uses just NEXT_INSN, for -g it will look at the DEBUG_INSN which is not a conditional jump, while otherwise it would look at the conditional jump and call cprop_jump. 2021-04-21 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/100148 * cprop.c (constprop_register): Use next_nondebug_insn instead of NEXT_INSN. * g++.dg/opt/pr100148.C: New test.
2021-04-21Test simlified call in cgraph_node::analyze().Martin Liska1-2/+0
gcc/ChangeLog: PR ipa/98815 * cgraphunit.c (cgraph_node::analyze): Remove duplicate free_dominance_info calls.
2021-04-21Fix AIX libstdc++ semaphore support [PR100164]Jakub Jelinek3-6/+6
> > The #error would not be hit if _GLIBCXX_HAVE_POSIX_SEMAPHORE were defined, > > but it shows up in your error report. > You now have pinpointed the problem. > It's not that AIX doesn't have semaphore, but that the code previously > had a fallback that hid a bug in the macros: // Use futex if available and didn't force use of POSIX using __fast_semaphore = __atomic_semaphore<__detail::__platform_wait_t>; using __fast_semaphore = __platform_semaphore; using __fast_semaphore = __atomic_semaphore<ptrdiff_t>; > The problem is that libstdc++ configure defines > _GLIBCXX_HAVE_POSIX_SEMAPHORE in config.h. libstdc++ uses sed to > rewrite config.h to c++config.h and prepends _GLIBCXX_, so c++config.h > contains > And bits/semaphore_base.h is not testing that corrupted macro. Either > semaphore_base.h needs to test for the corrupted macro, or libtsdc++ > configure needs to define HAVE_POSIX_SEMAPHORE without itself > prepending _GLIBCXX_ so that the c++config.h rewriting works > correctly and defines the correct macro for semaphore_base.h. The include/Makefile.am sed is: sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \ -e 's/VERSION/_GLIBCXX_VERSION/g' \ -e 's/WORDS_/_GLIBCXX_WORDS_/g' \ -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \ -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \ -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \ -e 's/ICONV_CONST/_GLIBCXX_ICONV_CONST/g' \ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \ -e '/[ ]_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT[ ]/d' \ < ${CONFIG_HEADER} >> $@ ;\ so for many macros one needs _GLIBCXX_ prefixes already in configure, as can be seen in grep AC_DEFINE.*_GLIBCXX configure.ac acinclude.m4 But _GLIBCXX_HAVE_POSIX_SEMAPHORE is the only one that shouldn't have that prefix because the sed is adding that. E.g. on i686-linux, I see grep _GLIBCXX__GLIBCXX c++config.h that proves it is the only broken one. So this change fixes the acinclude.m4 side. 2021-04-21 Jakub Jelinek <jakub@redhat.com> PR libstdc++/100164 * acinclude.m4: For POSIX semaphores AC_DEFINE HAVE_POSIX_SEMAPHORE rather than _GLIBCXX_HAVE_POSIX_SEMAPHORE. * configure: Regenerated. * config.h.in: Regenerated.
2021-04-21Simplify maybe_fold_reference APIRichard Biener1-58/+19
This simplifies the maybe_fold_reference API reflecting that it no longer canonicalizes refs (that's done with another function) but only performs constant folding and thus does nothing for is_lhs. This in turn allows to rip out quite some dead code and one user of valid_gimple_rhs_p. 2021-04-16 Richard Biener <rguenther@suse.de> * gimple-fold.c (maybe_fold_reference): Remove is_lhs parameter (and assume it to be false). (fold_gimple_assign): Adjust, remove all callers of maybe_fold_reference calling it with is_lhs true. (gimple_fold_call): Likewise. (fold_stmt_1): Likewise.
2021-04-21Fortran/OpenMP: Add 'omp depobj' and 'depend(mutexinoutset:'Tobias Burnus12-5/+402
gcc/fortran/ChangeLog: * dump-parse-tree.c (show_omp_namelist): Handle depobj + mutexinoutset in the depend clause. (show_omp_clauses, show_omp_node, show_code_node): Handle depobj. * gfortran.h (enum gfc_statement): Add ST_OMP_DEPOBJ. (enum gfc_omp_depend_op): Add OMP_DEPEND_UNSET, OMP_DEPEND_MUTEXINOUTSET and OMP_DEPEND_DEPOBJ. (gfc_omp_clauses): Add destroy, depobj_update and depobj. (enum gfc_exec_op): Add EXEC_OMP_DEPOBJ * match.h (gfc_match_omp_depobj): Match 'omp depobj'. * openmp.c (gfc_match_omp_clauses): Add depobj + mutexinoutset to depend clause. (gfc_match_omp_depobj, resolve_omp_clauses, gfc_resolve_omp_directive): Handle 'omp depobj'. * parse.c (decode_omp_directive, next_statement, gfc_ascii_statement): Likewise. * resolve.c (gfc_resolve_code): Likewise. * st.c (gfc_free_statement): Likewise. * trans-openmp.c (gfc_trans_omp_clauses): Handle depobj + mutexinoutset in the depend clause. (gfc_trans_omp_depobj, gfc_trans_omp_directive): Handle EXEC_OMP_DEPOBJ. * trans.c (trans_code): Likewise. libgomp/ChangeLog: * testsuite/libgomp.fortran/depobj-1.f90: New test. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/depobj-1.f90: New test. * gfortran.dg/gomp/depobj-2.f90: New test.
2021-04-21testsuite: Xfail gcc.dg/vect/pr71264.c on IBM ZStefan Schulze Frielinghaus1-1/+1
The test fails for targets with V4QImode support which is the case for IBM Z. gcc/testsuite/ChangeLog: * gcc.dg/vect/pr71264.c: Xfail on IBM Z due to V4QImode support.
2021-04-21Remove pedantic_non_lvalue_locRichard Biener1-21/+7
This removes pedantic_non_lvalue_loc which doesn't do what it says since quite some time in favor of what it actually does and where that's not a duplicate (protected_set_expr_location_unshare). 2021-04-19 Richard Biener <rguenther@suse.de> * fold-const.c (pedantic_non_lvalue_loc): Remove. (fold_binary_loc): Adjust. (fold_ternary_loc): Likewise.
2021-04-21varasm: Two SECTION_RETAIN fixes [PR100130]Richard Sandiford3-28/+54
switch_to_section warns if we try to output a retain decl in a section without a retain flag, or if we try to output a non-retain decl in a section with a retain flag. However, the warning only applied if we were trying to “switch” to the current section. This works if all decls that use a section are generated consecutively, but not if there is an unrelated decl in between. This patch makes the check unconditional, but suppresses the warning if we're writing the section's named.decl (i.e. the decl from which the section name and original flags were derived). Also, the warning didn't fire for -fsection-anchors, for two reasons: we allowed retain and non-retain decls to be put into the same block, and we didn't pass a decl to switch_to_section. Although these are arguably separate bugs, it isn't easy to fix them independently without temporarily regressing -fsection-anchor targets. gcc/ PR middle-end/100130 * varasm.c (get_block_for_decl): Make sure that any use of the retain attribute matches the section's retain flag. (switch_to_section): Check for retain mismatches even when changing sections, but do not warn if the given decl is the section's named.decl. (output_object_block): Pass the first decl in the block (if any) to switch_to_section. gcc/testsuite/ PR middle-end/100130 * c-c++-common/attr-retain-10.c: New test. * c-c++-common/attr-retain-11.c: Likewise.
2021-04-21testsuite: Fix gcc.dg/vect/bb-slp-39.c on IBM ZStefan Schulze Frielinghaus1-1/+2
On IBM Z the aliasing stores are realized through one element vector instructions, if no cost model for vectorization is used which is the default according to vect.exp. Fixed by changing the number of times the pattern must be found in the dump. gcc/testsuite/ChangeLog: * gcc.dg/vect/bb-slp-39.c: Change number of times the pattern must match for target IBM Z only.
2021-04-21libphobos: Fix build fails for powerpc-linuxIain Buclaw1-44/+24
As register names are required for darwin, but not accepted by gas unless you use `-mregnames', they have been conditionally removed on non-darwin targets. To avoid duplicating large blocks of almost identical code, the inline assembly is now statically generated. libphobos/ChangeLog: * libdruntime/core/thread/osthread.d (callWithStackShell): Statically generate PPC and PPC64 asm implementations, and conditionally remove PPC register names on non-Darwin targets.
2021-04-21Daily bump.GCC Administrator11-1/+239
2021-04-20Regenerate gcc.pot.Joseph Myers1-5575/+5642
* gcc.pot: Regenerate.
2021-04-20x86: Use crc32 target option for CRC32 intrinsicsH.J. Lu4-16/+23
Use crc32 target option for CRC32 intrinsics to support CRC32 intrinsics without enabling SSE vector instructions. * config/i386/i386-c.c (ix86_target_macros_internal): Define __CRC32__ for -mcrc32. * config/i386/i386-options.c (ix86_option_override_internal): Enable crc32 instruction for -msse4.2. * config/i386/i386.md (sse4_2_crc32<mode>): Remove TARGET_SSE4_2 check. (sse4_2_crc32di): Likewise. * config/i386/ia32intrin.h: Use crc32 target option for CRC32 intrinsics.
2021-04-20libstdc++: Disable tests that fail after atomic wait/notify rewriteJonathan Wakely3-0/+6
These tests are currently failing, but should be analyzed and re-enabled. libstdc++-v3/ChangeLog: * testsuite/30_threads/semaphore/try_acquire_for.cc: Disable test for targets not using futexes for semaphores. * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Disable for all targets.
2021-04-20libstdc++: Refactor/cleanup of C++20 atomic wait implementationThomas Rodgers19-710/+978
This is a substantial rewrite of the atomic wait/notify (and timed wait counterparts) implementation. The previous __platform_wait looped on EINTR however this behavior is not required by the standard. A new _GLIBCXX_HAVE_PLATFORM_WAIT macro now controls whether wait/notify are implemented using a platform specific primitive or with a platform agnostic mutex/condvar. This patch only supplies a definition for linux futexes. A future update could add support __ulock_wait/wake on Darwin, for instance. The members of __waiters were lifted to a new base class. The members are now arranged such that overall sizeof(__waiter_pool_base) fits in two cache lines (on platforms with at least 64 byte cache lines). The definition will also use destructive_interference_size for this if it is available. The __waiters type is now specific to untimed waits, and is renamed to __waiter_pool. Timed waits have a corresponding __timed_waiter_pool type. Much of the code has been moved from the previous __atomic_wait() free function to the __waiter_base template and a __waiter derived type is provided to implement the un-timed wait operations. A similar change has been made to the timed wait implementation. The __atomic_spin code has been extended to take a spin policy which is invoked after the initial busy wait loop. The default policy is to return from the spin. The timed wait code adds a timed backoff spinning policy. The code from <thread> which implements this_thread::sleep_for, sleep_until has been moved to a new <bits/std_thread_sleep.h> header which allows the thread sleep code to be consumed without pulling in the whole of <thread>. The entry points into the wait/notify code have been restructured to support either - * Testing the current value of the atomic stored at the given address and waiting on a notification. * Applying a predicate to determine if the wait was satisfied. The entry points were renamed to make it clear that the wait and wake operations operate on addresses. The first variant takes the expected value and a function which returns the current value that should be used in comparison operations, these operations are named with a _v suffix (e.g. 'value'). All atomic<_Tp> wait/notify operations use the first variant. Barriers, latches and semaphores use the predicate variant. This change also centralizes what it means to compare values for the purposes of atomic<T>::wait rather than scattering through individual predicates. This change also centralizes the repetitive code which adjusts for different user supplied clocks (this should be moved elsewhere and all such adjustments should use a common implementation). This change also removes the hashing of the pointer and uses the pointer value directly for indexing into the waiters table. libstdc++-v3/ChangeLog: * include/Makefile.am: Add new <bits/this_thread_sleep.h> header. * include/Makefile.in: Regenerate. * include/bits/this_thread_sleep.h: New file. * include/bits/atomic_base.h: Adjust all calls to __atomic_wait/__atomic_notify for new call signatures. * include/bits/atomic_timed_wait.h: Extensive rewrite. * include/bits/atomic_wait.h: Likewise. * include/bits/semaphore_base.h: Adjust all calls to __atomic_wait/__atomic_notify for new call signatures. * include/std/atomic: Likewise. * include/std/barrier: Likewise. * include/std/latch: Likewise. * include/std/semaphore: Likewise. * include/std/thread (this_thread::sleep_for) (this_thread::sleep_until): Move to new header. * testsuite/29_atomics/atomic/wait_notify/bool.cc: Simplify test. * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise. * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise. * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
2021-04-20rs6000: Fix cpu selection w/ isel (PR100108)Segher Boessenkool1-1/+1
There are various non-IBM CPUs with isel as well, so it is easiest if we just don't consider that flag here (it is not needed). 2021-04-20 Segher Boessenkool <segher@kernel.crashing.org> PR target/100108 * config/rs6000/rs6000.c (rs6000_machine_from_flags): Do not consider OPTION_MASK_ISEL.
2021-04-20libstdc++: Implement P2259R1 changes [PR95983]Patrick Palka4-107/+412
This implements the wording changes of P2259R1 "Repairing input range adaptors and counted_iterator", which resolves LWG 3283, 3289 and 3408. The wording changes are relatively straightforward, but they require some boilerplate to implement: the changes to make a type alias "conditionally present" in some iterator class are realized by defining a base class template and an appropriately constrained partial specialization thereof that contains the type alias, and having the iterator class derive from this base class. Sometimes the relevant condition depend on members from the iterator class, but because a class is incomplete when instantiating its bases, the constraints on the partial specialization can't use anything from the iterator class. This patch works around this by hoisting these members out to the enclosing scope (e.g. transform_view::_Iterator::_Base is hoisted out to transform_view::_Base so that transform_view::__iter_cat can use it). This patch also implements the proposed resolution of LWG 3291 to rename iota_view::iterator_category to iota_view::iterator_concept, which was previously problematic due to LWG 3408. libstdc++-v3/ChangeLog: PR libstdc++/95983 * include/bits/stl_iterator.h (__detail::__move_iter_cat): Define. (move_iterator): Derive from the above in C++20 in order to conditionally define iterator_category as per P2259. (move_iterator::__base_cat): No longer used, so remove. (move_iterator::iterator_category): Remove in C++20. (__detail::__common_iter_use_postfix_proxy): Define. (common_iterator::_Proxy): Rename to ... (common_iterator:__arrow_proxy): ... this. (common_iterator::__postfix_proxy): Define as per P2259. (common_iterator::operator->): Adjust. (common_iterator::operator++): Adjust as per P2259. (iterator_traits<common_iterator>::_S_iter_cat): Define. (iterator_traits<common_iterator>::iterator_category): Change as per P2259. (__detail::__counted_iter_value_type): Define. (__detail::__counted_iter_concept): Define. (__detail::__counted_iter_cat): Define. (counted_iterator): Derive from the above three classes in order to conditionally define value_type, iterator_concept and iterator category respectively as per P2259. (counted_iterator::operator->): Define as per P2259. (incrementable_traits<counted_iterator>): Remove as per P2259. (iterator_traits<counted_iterator>): Adjust as per P2259. * include/std/ranges (__detail::__iota_view_iter_cat): Define. (iota_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (iota_view::_S_iter_cat): Rename to ... (iota_view::_S_iter_concept): ... this. (iota_view::iterator_concept): Use it to apply LWG 3291 changes. (iota_view::iterator_category): Remove. (__detail::__filter_view_iter_cat): Define. (filter_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (filter_view::_Iterator): Move to struct __filter_view_iter_cat. (filter_view::_Iterator::iterator_category): Remove. (transform_view::_Base): Define. (transform_view::__iter_cat): Define. (transform_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (transform_view::_Iterator::_Base): Just alias transform_view::_Base. (transform_view::_Iterator::_S_iter_cat): Move to struct transform_view::__iter_cat. (transform_view::_Iterator::iterator_category): Remove. (transform_view::_Sentinel::_Base): Just alias transform_view::_Base. (join_view::_Base): Define. (join_view::_Outer_iter): Define. (join_view::_Inner_iter): Define. (join_view::_S_ref_is_glvalue): Define. (join_view::__iter_cat): Define. (join_view::_Iterator): Derive from it in order to conditionally define iterator_category as per P2259. (join_view::_Iterator::_Base): Just alias join_view::_Base. (join_view::_Iterator::_S_ref_is_glvalue): Just alias join_view::_S_ref_is_glvalue. (join_view::_Iterator::_S_iter_cat): Move to struct transform_view::__iter_cat. (join_view::_Iterator::_Outer_iter): Just alias join_view::_Outer_iter. (join_view::_Iterator::_Inner_iter): Just alias join_view::_Inner_iter. (join_view::_Iterator::iterator_category): Remove. (join_view::_Sentinel::_Base): Just alias join_view::_Base. (__detail::__split_view_outer_iter_cat): Define. (__detail::__split_view_inner_iter_cat): Define. (split_view::_Base): Define. (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat in order to conditionally define iterator_category as per P2259. (split_view::_Outer_iter::iterator_category): Remove. (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat in order to conditionally define iterator_category as per P2259. (split_view::_Inner_iter::_S_iter_cat): Move to __split_view_inner_iter_cat. (split_view::_Inner_iter::iterator_category): Remove. (elements_view::_Base): Define. (elements_view::__iter_cat): Define. (elements_view::_Iterator): Derive from the above in order to conditionall define iterator_category as per P2259. (elements_view::_Iterator::_Base): Just alias elements_view::_Base. (elements_view::_Iterator::_S_iter_concept) (elements_view::_Iterator::iterator_concept): Define as per P2259. (elements_view::_Iterator::iterator_category): Remove. (elements_view::_Sentinel::_Base): Just alias elements_view::_Base. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust constraints on iterator_traits<counted_iterator>. * testsuite/std/ranges/p2259.cc: New test.
2021-04-20c++: unexpanded pack in enum in lambda [PR100109]Jason Merrill2-1/+15
Another construct we need to look inside. gcc/cp/ChangeLog: PR c++/100109 * pt.c (find_parameter_packs_r): Look into enum initializers. gcc/testsuite/ChangeLog: PR c++/100109 * g++.dg/cpp0x/lambda/lambda-variadic14.C: New test.
2021-04-20libstdc++: Define __cpp_lib_to_chars for C++20 [PR 100146]Jonathan Wakely6-13/+12
This defines the feature test macro when uselocale is available, because the floating-point std::from_chars support currently depends on that. Co-authored-by: Jakub Jelinek <jakub@redhat.com> libstdc++-v3/ChangeLog: PR libstdc++/100146 * include/std/charconv (__cpp_lib_to_chars): Define conditionally. * include/std/version (__cpp_lib_to_chars): Likewise.. * testsuite/20_util/from_chars/4.cc: Only check feature test macro, not _GLIBCXX_HAVE_USELOCALE. * testsuite/20_util/from_chars/5.cc: Likewise. * testsuite/20_util/from_chars/6.cc: Likewise. * testsuite/20_util/to_chars/long_double.cc: Likewise.
2021-04-20libstdc++: Update ppc64le baseline_symbols.txtJakub Jelinek2-2/+256
> Tested on powerpc64{,le}-linux now (-m32/-m64 on be) and while the first > patch works fine, the second one unfortunately doesn't on either be or le, > so more work is needed there. Here are the needed changes to make it work. For symbols with _LDBL_ substring in version name we already have code to ignore those if no such symbols appear (but it is slightly incorrect, see below). So, this patch does the same thing for symbol versions with _IEEE128_ substring. The previously incorrectly handled case is that in addition to FUNC:_ZNKSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_IEEE128_3.4.29 or OBJECT:12:_ZTSu9__ieee128@@CXXABI_IEEE128_1.3.13 cases we also have the OBJECT:0:CXXABI_IEEE128_1.3.13 OBJECT:0:GLIBCXX_IEEE128_3.4.29 cases, which have empty version_name and the name is in that case the symbol version. Those need to be ignored too. 2021-04-20 Jakub Jelinek <jakub@redhat.com> * testsuite/util/testsuite_abi.cc (compare_symbols): If any symbol versions with _IEEE128_ substring are found, set ieee_version_found to true. Ignore missing symbols with _IEEE128_ in version name if !ieee_version_found. Use i->first as version_name instead of i->second.version_name if the latter is empty. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2021-04-20Fix typo in param description.Martin Liska2-2/+2
gcc/ChangeLog: * doc/invoke.texi: Fix typo. * params.opt: Likewise.
2021-04-20Bump version to 12.Martin Liska1-1/+1
gcc/ada/ChangeLog: * gnatvsn.ads: Bump Library_Version to 12.
2021-04-20Document ranger-logical-depth in invoke.texiMartin Liska1-0/+4
gcc/ChangeLog: * doc/invoke.texi: Document new param.
2021-04-20Update crontab and git_update_version.pyJakub Jelinek2-5/+7
2021-04-20 Jakub Jelinek <jakub@redhat.com> maintainer-scripts/ * crontab: Snapshots from trunk are now GCC 12 related. Add GCC 11 snapshots from the respective branch. contrib/ * gcc-changelog/git_update_version.py (active_refs): Add releases/gcc-11.
2021-04-20Bump BASE-VER.basepoints/gcc-12Jakub Jelinek1-1/+1
2021-04-20 Jakub Jelinek <jakub@redhat.com> * BASE-VER: Set to 11.0.0.
2021-04-20testsuite: Fix up gcc.target/s390/zero-scratch-regs-1.cStefan Schulze Frielinghaus1-55/+40
Depending on whether GCC is configured using --with-mode=zarch or not, for the 31bit target instructions are generated either for ESA or z/Architecture. For the sake of simplicity and robustness test only for the latter by adding manually option -mzarch. gcc/testsuite/ChangeLog: * gcc.target/s390/zero-scratch-regs-1.c: Force test to run for z/Architecture only.
2021-04-20Fortran: Fix host associated PDT entity initialization [PR99307].Paul Thomas3-3/+30
2021-04-20 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/100110 * trans-decl.c (gfc_get_symbol_decl): Replace test for host association with a check that the current and symbol namespaces are the same. gcc/testsuite/ PR fortran/100110 * gfortran.dg/pdt_31.f03: New test. * gfortran.dg/pdt_26.f03: Reduce 'builtin_malloc' count from 9 to 8.
2021-04-20libphobos: Fix SIGBUS in read_encoded_value_with_base on sparc-sun-solaris ↵Iain Buclaw2-48/+57
(PR98584) Instead of unsafe pointer dereferencing, use memcpy() to read encoded values from memory. The function `read_encoded_value' has been updated to accept a ref parameter, this simplifies handling of the pointer to memory needing to be read. libphobos/ChangeLog: PR d/98584 * libdruntime/gcc/deh.d (scanLSDA): Update calls to read_uleb128 and read_encoded_value. (actionTableLookup): Update calls to read_sleb128 and read_encoded_value_with_base. * libdruntime/gcc/unwind/pe.d (read_uleb128): Update signature. (read_sleb128): Update signature. (read_unaligned): New function. (read_encoded_value_with_base): Update signature. Call read_unaligned instead of unsafe pointer dereferencing. (read_encoded_value): Update signature.
2021-04-20Daily bump.GCC Administrator11-1/+186
2021-04-19c++: ICE with concept defined in function [PR97536]Marek Polacek2-0/+51
This is an ICE-on-invalid, but I keep seeing it when reducing code so I'd like to fix it. We crash on template <typename> void forward() { concept C = true; } which breaks two requirements: [temp.concept]/1: A concept is a template ... [temp.concept]/3: A concept-definition shall inhabit a namespace scope. This patch adds a test that exercises broken code and fixes the ICE by checking that a concept-definition is defined at namespace scope. gcc/cp/ChangeLog: PR c++/97536 * decl.c (grokvardecl): Given an error when a concept is not defined at namespace scope. gcc/testsuite/ChangeLog: PR c++/97536 * g++.dg/concepts/diagnostic16.C: New test.
2021-04-19tree-optimization/100081 - Limit depth of logical expression windback.Andrew MacLeod3-27/+47
Limit how many logical expressions GORI will look back through when evaluating outgoing edge range. PR tree-optimization/100081 * gimple-range-cache.h (ranger_cache): Inherit from gori_compute rather than gori_compute_cache. * gimple-range-gori.cc (is_gimple_logical_p): Move to top of file. (range_def_chain::m_logical_depth): New member. (range_def_chain::range_def_chain): Initialize m_logical_depth. (range_def_chain::get_def_chain): Don't build defchains through more than LOGICAL_LIMIT logical expressions. * params.opt (param_ranger_logical_depth): New.
2021-04-19d: Fix ICE in when formating a string with '%' or '`' characters (PR98457)Iain Buclaw2-5/+68
The percentage character was being confused for a format specifier in pp_format(), whilst the backtick character was confused for the beginning of a quoted string in expand_d_format(). Both are now properly escaped to avoid the ICE. gcc/d/ChangeLog: PR d/98457 * d-diagnostic.cc (expand_d_format): Handle escaped backticks. (escape_d_format): New funtion. (verror): Call escape_d_format on prefixing strings. (vdeprecation): Likewise. gcc/testsuite/ChangeLog: PR d/98457 * gdc.dg/pr98457.d: New test.
2021-04-19libphobos: Merge upstream druntime 89f870b7, phobos e6907ff3eIain Buclaw18-209/+520
Phobos changes: - Synchronize C bindings with the latest port fixes in upstream druntime. - Add Config.stderrPassThrough to std.process (PR98494). Reviewed-on: https://github.com/dlang/druntime/pull/3448 https://github.com/dlang/phobos/pull/7984 libphobos/ChangeLog: PR d/98494 * libdruntime/MERGE: Merge upstream druntime 89f870b7. * src/MERGE: Merge upstream phobos e6907ff3e.
2021-04-19libphobos: Add Thread/Fiber support code for Darwin (PR98058)Iain Buclaw12-53/+656
libphobos/ChangeLog: PR d/98058 * configure: Regenerate. * libdruntime/Makefile.am (DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/config.d * libdruntime/Makefile.in: Regenerate. * libdruntime/config/powerpc/switchcontext.S: Implement fiber_switchContext for __MACH__. * libdruntime/config/x86/switchcontext.S: Likewise. * libdruntime/core/sys/darwin/config.d: New file. * libdruntime/core/thread/fiber.d (Fiber.getThis): Mark noinline. (UnsafeFiberMigration): Define for OSX/X86 and OSX/X86_64. * libdruntime/core/thread/osthread.d (callWithStackShell): Add inline assembler implementation for X86, X86_64, PPC, and PPC64. * libdruntime/core/thread/threadbase.d (ThreadBase.getThis): Mark noinline. * libdruntime/gcc/deh.d (FuncTable): Remove definition. * m4/druntime/os.m4 (DRUNTIME_OS_MINFO_BRACKETING): Check for right bracket symbol on darwin* targets. * testsuite/libphobos.thread/fiber_guard_page.d: Update test to support ucontext-based Fibers.