aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-05-04coroutines: Mark the gro as artificial.Iain Sandoe2-0/+7
This corrects an oversight, the coro.gro object is a a compiler-generated entity and should be marked as artificial and ignored. gcc/cp/ChangeLog: 2020-05-04 Iain Sandoe <iain@sandoe.co.uk> * coroutines.cc (morph_fn_to_coro): Mark the coro.gro variable as artificial and ignored.
2020-05-04Update gcc sv.po.Joseph Myers2-356/+238
* sv.po: Update.
2020-05-04libstdc++: Avoid negating a size_t [pr 94747]Nathan Sidwell2-5/+12
Although the code here is well formed, it doesn't show intent well. The reason checkers trigger on this is that it is a cause of real bugs. So, negate a ptrdiff_t instead. * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to ptrdiff_t before negation, to show intent more clearly.
2020-05-04Added missing ChangeLog entriesUros Bizjak2-0/+13
2020-05-04i386: Use SBB more [PR94650]Uros Bizjak3-3/+82
When returning 0 or -1, "SBB reg,reg" instruction that borrows carry flag can be used. Carry flag can be generated by converting compare with zero to a LTU compare with one, so e.g. return -(x == 0) generates: cmpq $1, %rdi sbbq %rax, %rax instead of: xorl %eax, %eax testq %rdi, %rdi sete %al negq %rax A similar conversion can be used for return -(x != 0) where NEG insn can be used instead of compare. According to x86 ISA, NEG insn sets carry flag when the source operand is != 0, resulting in: negq %rdi sbbq %rax, %rax The conversion avoids partial register stall with SETcc instructions. PR target/94795 * config/i386/i386.md (*neg<mode>_ccc): New insn pattern. (EQ compare->LTU compare splitter): New splitter. (NE compare->NEG splitter): Ditto. testsuite/ChangeLog: PR target/94795 * gcc.target/i386/pr94795-1.c: New test. * gcc.target/i386/pr94795-2.c: New test.
2020-05-04c++: Simplify process_template_parmNathan Sidwell2-21/+31
Process_template_parm ends up walking the parameter list twice. There's not need to do this. Just rember the final node and modify its CHAIN directly. Also comment on why end_template_parm_list does a pop and a push, rather than modifying the header in place. pt.c (process_template_parm): Don't walk the template list twice, remember the final node instead. (end_template_parm_list): Refactor. Comment on why we do a pop and a push.
2020-05-04c++: Don't save parms in nested requirement [pr 94827]Nathan Sidwell2-10/+13
This followup patch just removes some stashing that we never made use of. * constraint.cc (tsubst_nested_requirement): TYPE directly holds notmalized requirement. (finish_nested_requirement): Don't stash current tpl parms into the requirement. (diagnose_nested_requirement): TYPE directly holds notmalized requirement.
2020-05-04Revert "tree: Don't reuse types if TYPE_USER_ALIGN differ [PR94775]"Marek Polacek3-43/+10
This reverts commit 6318fe77395fc0dd59419bc4d69cd06ac0158e54. Revert: 2020-04-30 Marek Polacek <polacek@redhat.com> PR c++/94775 * tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match. (check_aligned_type): Check if TYPE_USER_ALIGN match.
2020-05-04tree-optimization/93891 - improve same-store disambiguationRichard Biener2-2/+10
We need a reference to assess alignment, fall back to the original reference tree if available. 2020-05-04 Richard Biener <rguenther@suse.de> PR tree-optimization/93891 * tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to the original reference tree for assessing access alignment.
2020-05-04libstdc++: Make pmr::synchronized_pool_resource work without libpthread (PR ↵Jonathan Wakely5-44/+179
94936) I implicitly assumed that programs using pmr::synchronized_pool_resource would also be using multiple threads, and so the weak symbols in gthr-posix.h would be resolved by linking to libpthread. If that isn't true then it crashes when trying to use pthread_key_create. This commit makes the pool resource check __gthread_active_p() before using thread-specific data, and just use a single set of memory pools when there's only a single thread. PR libstdc++/94936 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools): Add comment about single-threaded behaviour. (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist class member access out of loop. (synchronized_pool_resource::synchronized_pool_resource()) (synchronized_pool_resource::~synchronized_pool_resource()) (synchronized_pool_resource::release()): Check __gthread_active_p before creating and/or deleting the thread-specific data key. (synchronized_pool_resource::_M_thread_specific_pools()): Adjust assertions. (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast path for single-threaded case. (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)): Likewise. Return if unable to find a pool that owns the allocation. * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: New test. * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New test. * testsuite/20_util/synchronized_pool_resource/release_single.cc: New test.
2020-05-04Handle -fstrict-enum casts.Aldy Hernandez1-24/+44
This fixes: < FAIL: g++.dg/pr84933.C -std=gnu++14 (internal compiler error) < FAIL: g++.dg/pr84933.C -std=gnu++14 (test for excess errors) < FAIL: g++.dg/pr84933.C -std=gnu++17 (internal compiler error) < FAIL: g++.dg/pr84933.C -std=gnu++17 (test for excess errors) < FAIL: g++.dg/pr84933.C -std=gnu++2a (internal compiler error) < FAIL: g++.dg/pr84933.C -std=gnu++2a (test for excess errors) < FAIL: g++.dg/pr84933.C -std=gnu++98 (internal compiler error) < FAIL: g++.dg/pr84933.C -std=gnu++98 (test for excess errors)
2020-05-04tree-optimization/39612 - avoid issueing loads in SM when possibleRichard Biener4-8/+76
Currently store-motion emits a load of the value in the loop preheader even when the original loop does not contain any read of the reference. This avoids doing this. In the conditional store-motion case we need to mark the sunk stores with no-warning since the control dependence is too tricky to figure out for the uninit warning. 2020-05-04 Richard Biener <rguenther@suse.de> PR tree-optimization/39612 * tree-ssa-loop-im.c (im_mem_ref::loaded): New member. (set_ref_loaded_in_loop): New. (mark_ref_loaded): Likewise. (gather_mem_refs_stmt): Call mark_ref_loaded for loads. (execute_sm): Avoid issueing a load when it was not there. (execute_sm_if_changed): Avoid issueing warnings for the conditional store. * gcc.dg/tree-ssa/pr39612.c: New testcase.
2020-05-04tree-inline: Simplify IPA-CP type conversion (PR 93385)Martin Jambor2-37/+12
when callers and callees do not quite agree on the type of a parameter, usually with ill-defined K&R or with smilarly wrong LTO input, IPA-CP can attempt to try and substitute a wrong type for a parameter (see e.g. gcc.dg/torture/pr48063.c). Function tree_function_versioning attempts to handle this in order not to create invalid gimple but it then creates the mapping using setup_one_parameter which also handles the same situation to avoid similar problems when inlining and in more defined way. So this patch simply removes the conversion attempts in tree_function_versioning itself. It is helpful for my upcoming fix of PR 93385 because then I do not need to teach ipa_param_body_adjustments to distinguish between successful and unsuccessful mappings - setup_one_parameter uses force_value_to_type for conversions which simly maps the worst cases to zero. 2020-05-04 Martin Jambor <mjambor@suse.cz> PR ipa/93385 * tree-inline.c (tree_function_versioning): Leave any type conversion of replacements to setup_one_parameter and its friend force_value_to_type.
2020-05-04i386: Use SHR to compare with large power-of-two constants [PR94650]Uros Bizjak5-0/+110
Convert unsigned compares where m >= LARGE_POWER_OF_TWO and LARGE_POWER_OF_TWO represent an immediate where bit 33+ is set to use a SHR instruction and compare the result to 0. This avoids loading a large immediate with MOVABS insn. movabsq $1099511627775, %rax cmpq %rax, %rdi ja .L5 gets converted to: shrq $40, %rdi jne .L5 PR target/94650 * config/i386/predicates.md (shr_comparison_operator): New predicate. * config/i386/i386.md (compare->shr splitter): New splitters. testsuite/ChangeLog: PR target/94650 * gcc.targeti/i386/pr94650.c: New test.
2020-05-04match.pd: Optimize (x < 0) != (y < 0) into (x ^ y) < 0 [PR94718]Jakub Jelinek5-0/+153
The following patch (on top of the two other PR94718 patches) performs the actual optimization requested in the PR. 2020-05-04 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94718 * match.pd ((X < 0) != (Y < 0) into (X ^ Y) < 0): New simplification. * gcc.dg/tree-ssa/pr94718-4.c: New test. * gcc.dg/tree-ssa/pr94718-5.c: New test.
2020-05-04match.pd: Decrease number of nop conversions around bitwise ops [PR94718]Jakub Jelinek4-3/+72
On the following testcase, there are in *.optimized dump 14 nop conversions (from signed to unsigned and back), while this patch decreases that number to just 4; for bitwise ops it really doesn't matter if they are performed in signed or unsigned, so the patch (in GIMPLE only, there are some comments about it being undesirable during GENERIC earlier), if it sees both bitop operands nop converted from the same types performs the bitop in their non-converted type and converts the result (i.e. 2 conversions into 1), similarly, if a bitop has one operand nop converted from something, the other not and the result is converted back to the type of the nop converted operand before conversion, it is possible to replace those 2 conversions with just a single conversion of the other operand. 2020-05-04 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94718 * match.pd (bitop (convert @0) (convert? @1)): For GIMPLE, if we can, replace two nop conversions on bit_{and,ior,xor} argument and result with just one conversion on the result or another argument. * gcc.dg/tree-ssa/pr94718-3.c: New test.
2020-05-04match.pd: Move (X & C) eqne (Y & C) -> -> (X ^ Y) & C eqne 0 opt to match.pd ↵Jakub Jelinek6-45/+115
[PR94718] This patch moves this optimization from fold-const.c to match.pd where it is actually much shorter to do and lets optimize even code not seen together in a single expression in the source, as the first step towards fixing the PR. 2020-05-04 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/94718 * fold-const.c (fold_binary_loc): Move (X & C) eqne (Y & C) -> (X ^ Y) & C eqne 0 optimization to ... * match.pd ((X & C) op (Y & C) into (X ^ Y) & C op 0): ... here. * gcc.dg/tree-ssa/pr94718-1.c: New test. * gcc.dg/tree-ssa/pr94718-2.c: New test.
2020-05-04Clean up operator_cast.Aldy Hernandez1-49/+70
2020-05-04diagnostics: get_option_html_page fixesJakub Jelinek2-19/+16
While testing the --with-documentation-root-url= changes, I run into [Wreturn-type] URL pointing to gfortran documentation where it obviously isn't documented. The following patch updates the list of options to match reality (on the other side -Wconversion-extra is gfortran only option documented in gfortran.texi). Or, perhaps better use the attached patch instead, which doesn't have a hardcoded list and instead uses the flags? I went through options.c and the updated list of options matches exactly the cases where CL_Fortran is set for "-W*" options together with CL_C and/or CL_CXX (ok, there is also -Wall and -Wextra, but hopefully we don't emit [Wall] or [Wextra] for anything). 2020-05-04 Jakub Jelinek <jakub@redhat.com> * opts.c (get_option_html_page): Instead of hardcoding a list of options common between C/C++ and Fortran only use gfortran/ documentation for warnings that have CL_Fortran set but not CL_C or CL_CXX.
2020-05-04Daily bump.GCC Administrator1-1/+1
2020-05-03i386: Use plus_constant instead of gen_rtx_PLUSUros Bizjak4-33/+49
Replace gen_rtx_PLUS with a GEN_INT with plus_constant. 2020-05-03 Uroš Bizjak <ubizjak@gmail.com> * config/i386/i386-expand.c (ix86_expand_int_movcc): Use plus_constant instead of gen_rtx_PLUS with GEN_INT. (emit_memmov): Ditto. (emit_memset): Ditto. (ix86_expand_strlensi_unroll_1): Ditto. (release_scratch_register_on_entry): Ditto. (gen_frame_set): Ditto. (ix86_emit_restore_reg_using_pop): Ditto. (ix86_emit_outlined_ms2sysv_restore): Ditto. (ix86_expand_epilogue): Ditto. (ix86_expand_split_stack_prologue): Ditto. * config/i386/i386.md (push immediate splitter): Ditto. (strmov): Ditto. (strset): Ditto.
2020-05-03libstdc++: Make byte-sized std::fill_n a constant expression (PR 94933)Jonathan Wakely3-1/+48
The overload for byte types uses memset and isn't constexpr. This adds the specifier and uses std::is_constant_evaluated() to provide a compile-time alternative. PR libstdc++/94933 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types usable in constant expressions. * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and non-scalars.
2020-05-03Fix incorrect use of 'Unrestricted_Access in testcaseEric Botcazou2-1/+5
2020-05-03Daily bump.GCC Administrator1-1/+1
2020-05-02gfortran: Get asan library from TEST_ALWAYS_FLAGSH.J. Lu2-0/+14
Update gfortran_target_compile to get the newly built asan library from TEST_ALWAYS_FLAGS to avoid: /usr/bin/ld: cannot find libasan_preinit.o: No such file or directory /usr/bin/ld: cannot find -lasan collect2: error: ld returned 1 exit status compiler exited with status 1 FAIL: gfortran.dg/asan/pointer_assign_16.f90 -fsanitize=address -O0 (test for excess errors) PR fortran/94788 * lib/gfortran.exp (gfortran_target_compile): Get asan library from TEST_ALWAYS_FLAGS.
2020-05-02Darwin: Fix a diagnostic spelling [PR93861]Iain Sandoe2-1/+7
Add a missing '-' to a diagnostic. gcc/ChangeLog: 2020-05-02 Iain Sandoe <iain@sandoe.co.uk> PR translation/93861 * config/darwin-driver.c (darwin_driver_init): Adjust spelling in a warning.
2020-05-02Add asan subdirectory for gfortran.dg.Thomas Koenig3-0/+351
Because the test case for PR 94788 requires -fsanitize=address to expose the double free, I have created a subdirectory under gfortran.dg where such test cases can go. I have tested this with make check-fortran RUNTESTFLAGS="asan.exp=*" and it works; with a compiler that introduces the double free bug into the test case, the result is as expected 2020-05-02 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/94788 * gfortran.dg/asan: New directory. * gfortran.dg/asan/asan.exp: New file. * gfortran.dg/asan/pointer_assign_16.f90: New test case.
2020-05-02tilegx: Unbreak buildJakub Jelinek2-1/+7
../../gcc/config/tilegx/tilegx.md:4109:1: ambiguous attribute 'n'; could be '1' (via 'I124MODE:n') or '4' (via 'I48MODE:n') ../../gcc/config/tilegx/tilegx.md:4109:1: ambiguous attribute 'n'; could be '1' (via 'I124MODE:n') or '' (via 'I48MODE:n') ../../gcc/config/tilegx/tilegx.md:4109:1: ambiguous attribute 'n'; could be '2' (via 'I124MODE:n') or '4' (via 'I48MODE:n') ../../gcc/config/tilegx/tilegx.md:4109:1: ambiguous attribute 'n'; could be '2' (via 'I124MODE:n') or '' (via 'I48MODE:n') ../../gcc/config/tilegx/tilegx.md:4109:1: ambiguous attribute 'n'; could be '4' (via 'I124MODE:n') or '' (via 'I48MODE:n') The insn name already uses <I124MODE:n> explicitly, just the preparation stmts don't, and as it creates a I124MODE lowpart subreg of a word mode register, <I124MODE:n> seems obviously correct. 2020-05-02 Jakub Jelinek <jakub@redhat.com> * config/tilegx/tilegx.md (insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>): Use <I124MODE:n> rather than just <n>.
2020-05-01Add patch_area_size and patch_area_entry to crtlH.J. Lu12-29/+116
Currently patchable area is at the wrong place. It is placed immediately after function label and before .cfi_startproc. A backend should be able to add a pseudo patchable area instruction durectly into RTL. This patch adds patch_area_size and patch_area_entry to crtl so that the patchable area info is available in RTL passes. It also limits patch_area_size and patch_area_entry to 65535, which is a reasonable maximum size for patchable area. gcc/ PR target/93492 * cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size and crtl->patch_area_entry. * emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry. * opts.c (common_handle_option): Limit function_entry_patch_area_size and function_entry_patch_area_start to USHRT_MAX. Fix a typo in error message. * varasm.c (assemble_start_function): Use crtl->patch_area_size and crtl->patch_area_entry. * doc/invoke.texi: Document the maximum value for -fpatchable-function-entry. gcc/c-family/ PR target/93492 * c-attribs.c (handle_patchable_function_entry_attribute): Limit value to USHRT_MAX (65535). gcc/testsuite/ PR target/93492 * c-c++-common/patchable_function_entry-error-1.c: New test. * c-c++-common/patchable_function_entry-error-2.c: Likewise. * c-c++-common/patchable_function_entry-error-3.c: Likewise.
2020-05-02Daily bump.GCC Administrator1-1/+1
2020-05-01c++: Missing SFINAE with inaccessible static data member [PR90880]Patrick Palka7-11/+61
This is a missing SFINAE issue when verifying the accessibility of a static data member. The cause is that check_accessibility_of_qualified_id unconditionally passes tf_warning_or_error to perform_or_defer_access_check, even when called from tsubst_qualified_id(..., complain=tf_none). This patch fixes this by plumbing 'complain' from tsubst_qualified_id through check_accessibility_of_qualified_id to reach perform_or_defer_access_check, and by giving check_accessibility_of_qualified_id the appropriate return value. gcc/cp/ChangeLog: PR c++/90880 * cp-tree.h (check_accessibility_of_qualified_id): Add tsubst_flags_t parameter and change return type to bool. * parser.c (cp_parser_lookup_name): Pass tf_warning_to_error to check_accessibility_of_qualified_id. * pt.c (tsubst_qualified_id): Return error_mark_node if check_accessibility_of_qualified_id returns false. * semantics.c (check_accessibility_of_qualified_id): Add complain parameter. Pass complain instead of tf_warning_or_error to perform_or_defer_access_check. Return true unless perform_or_defer_access_check returns false. gcc/testsuite/ChangeLog: PR c++/90880 * g++.dg/template/sfinae29.C: New test.
2020-05-01c++: Parenthesized-init of aggregates accepts invalid code [PR94885]Marek Polacek4-1/+30
Here we have (conceptually *) something like struct B { }; struct D : B { }; D(0); // invalid and in C++20 the ()-initialization has created a { 0 } constructor that it tries to initialize an object of type D with. We should reject initializing an object of type B from 0, but we wrongly accept it because process_init_constructor_record skips initializers for empty bases/fields: if (DECL_SIZE (field) && integer_zerop (DECL_SIZE (field)) && !TREE_SIDE_EFFECTS (next)) /* Don't add trivial initialization of an empty base/field to the constructor, as they might not be ordered the way the back-end expects. */ continue; but here 'next' was error_mark_node, returned by massage_elt_init, so we wound up with { } which would validly value-initialize the object. [*] Usually digest_init in build_new_method_call_1 would detect this, but in this case the instance is is_dummy_object and we don't call digest just yet. PR c++/94885 * typeck2.c (process_init_constructor_record): Return PICFLAG_ERRONEOUS if an initializer element was erroneous. * g++.dg/cpp2a/paren-init26.C: New test.
2020-05-01Darwin: Fix bootstrap break from libsanitizer changes.Iain Sandoe2-4/+8
The recent libsanitizer change seems to have had a corrupt chunk, that caused it to apply a change part way through the SUBTARGET_INIT_BUILTINS macro, leading to a bootstrap fail in stage1. gcc/ChangeLog: 2020-05-01 Iain Sandoe <iain@sandoe.co.uk> * config/i386/darwin.h: Repair SUBTARGET_INIT_BUILTINS. Override SUBTARGET_SHADOW_OFFSET macro.
2020-05-01testsuite: Enable asan tests on FreeBSD x86_64Andreas Tobler12-13/+30
Enable asan tests on FreeBSD x86_64. testsuite: * gcc.dg/asan/pr87930.c: Enable on x86_64 FreeBSD. * c-c++-common/asan/asan-interface-1.c: Likewise. * c-c++-common/asan/clone-test-1.c: Likewise. * c-c++-common/asan/no-asan-stack.c: Likewise. * c-c++-common/asan/pr59063-1.c: Likewise. * c-c++-common/asan/pr59063-2.c: Likewise. * g++.dg/asan/asan_test.C: Likewise. * g++.dg/asan/asan_test_utils.h: Likewise. * g++.dg/asan/interception-failure-test-1.C: Likewise. * g++.dg/asan/interception-malloc-test-1.C: Likewise.
2020-05-01c++: Local class DMI using local static [PR90479]Jason Merrill3-3/+23
For default member initializers in templates it's important to push into the right context during get_nsdmi. But for a local class that's not possible, and trying leaves the function context we need to be in, so don't try. gcc/cp/ChangeLog 2020-05-01 Jason Merrill <jason@redhat.com> PR c++/90479 * init.c (get_nsdmi): Don't push_to_top_level for a local class.
2020-05-01c++: -fmerge-all-constants vs. destructors [PR91529]Jason Merrill3-1/+24
cp_finish_decl avoids setting TREE_READONLY on TREE_STATIC variables that have non-constant construction or destruction, but -fmerge-all-constants was converting an automatic variable to static while leaving TREE_READONLY set. Fixed by clearing the flag in cp_finish_decl in the presence of -fmerge-all-constants. gcc/cp/ChangeLog 2020-05-01 Jason Merrill <jason@redhat.com> PR c++/91529 * decl.c (cp_finish_decl): Also clear TREE_READONLY if -fmerge-all-constants.
2020-05-01c++: generic lambda and -fsanitize=vla-bound [PR93822]Jason Merrill2-0/+15
Within the generic lambda the VLA capture proxy VAR_DECL has DECL_VALUE_EXPR which is a NOP_EXPR to the VLA type of the proxy. The problem here was that when instantiating we were tsubsting that type twice, once for the type of the DECL and once for the type of the NOP_EXPR, and getting two different (though equivalent) types. Then gimplify_type_sizes fixed up the type of the DECL, but that didn't affect the type of the NOP_EXPR, leading to sadness. Fixed by directly reusing the type from the DECL. gcc/cp/ChangeLog 2020-05-01 Jason Merrill <jason@redhat.com> PR c++/93822 * pt.c (tsubst_decl): Make sure DECL_VALUE_EXPR continues to have the same type as the variable.
2020-05-01i386: Use generic division to generate INVALID and DIVZERO exceptionsUros Bizjak6-36/+41
Introduce math_force_eval to evaluate generic division to generate INVALID and DIVZERO exceptions. libgcc/ChangeLog: * config/i386/sfp-exceptions.c (__math_force_eval): New define. (__sfp_handle_exceptions): Use __math_force_eval to evaluete generic division to generate INVALID and DIVZERO exceptions. libatomic/ChangeLog: * config/x86/fenv.c (__math_force_eval): New define. (__atomic_feraiseexcept): Use __math_force_eval to evaluete generic division to generate INVALID and DIVZERO exceptions. libgfortran/ChangeLog: * config/fpu-387.h (__math_force_eval): New define. (local_feraiseexcept): Use __math_force_eval to evaluete generic division to generate INVALID and DIVZERO exceptions.
2020-05-01gcc: Enable bits for sanitizer support on FreeBSD x86_64Andreas Tobler8-3/+53
This patch add the necessary bits to suport libasan on FreeBSD x86_64. gcc * config/i386/i386.h: Define a new macro: SUBTARGET_SHADOW_OFFSET. * config/i386/i386.c (ix86_asan_shadow_offset): Use this macro. * config/i386/darwin.h: Override the SUBTARGET_SHADOW_OFFSET macro. * config/i386/freebsd.h: Likewise. * config/freebsd.h (LIBASAN_EARLY_SPEC): Define. LIBTSAN_EARLY_SPEC): Likewise. (LIBLSAN_EARLY_SPEC): Likewise. libsanitizer: * configure.tgt: Add x86_64- and i?86-*-freebsd* targets.
2020-05-01libsanitizer: Add missing file and regen Makefile.inAndreas Tobler3-0/+11
In the last import the sanitizer_platform_limits_freebsd.cpp got forgotten. Fix this. libsanitizer/sanitizer_common: * Makefile.am: Add sanitizer_platform_limits_freebsd.cpp. * Makefile.in: Regenerate.
2020-05-01libstdc++: Add more tests for _E10, _E11 etc. (PR 94901)Jonathan Wakely2-1/+19
PR libstdc++/94901 * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
2020-05-01libstdc++: Replace deduced return type in ranges::iter_move (PR 92894)Jonathan Wakely4-11/+153
The deduced return type causes the instantiation of the function body, which can then require the instantiation of std::projected::operator* which is intentionally not defined. This patch uses a helper trait to define the return type, so that the function body doesn't need to be instantiated. That helper trait can then also be used in other places that currently check the return type of ranges::iter_move (iter_rvalue_reference_t and indirectly_readable). 2020-05-01 Jonathan Wakely <jwakely@redhat.com> Patrick Palka <ppalka@redhat.com> PR libstdc++/92894 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): Add trait to determine return type and an alias for it. (ranges::__cust_imove::_IMove::operator()): Use __result instead of deduced return type. (iter_rvalue_reference_t): Use _IMove::__type instead of checking the result of ranges::iter_move. (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t instead of checking the result of ranges::iter_move. * testsuite/24_iterators/customization_points/92894.cc: New test. * testsuite/24_iterators/indirect_callable/92894.cc: New test.
2020-05-01libstdc++: Replace reserved identifier _T with _Tp (PR 94901)Jonathan Wakely3-2/+81
The libstdc++ manual documents that _T can not be used, because it's a macro in system headers on some targets. PR libstdc++/94901 * include/std/type_traits (__is_complete_or_unbounded): Replace BADNAME _T with _Tp. * testsuite/17_intro/badnames.cc: New test.
2020-04-30document effective target fileioAlexandre Oliva2-0/+11
check_effective_target_fileio was added to gcc/testsuite/lib/target-supports.exp the other day, without documentation. This patch adds the corresponding documentation. for gcc/ChangeLog * doc/sourcebuild.texi (Effective-Target Keywords): Document the newly-introduced fileio effective target.
2020-05-01Daily bump.GCC Administrator1-1/+1
2020-04-30cse: Add test case. [PR94740]Peter Bergner2-0/+16
PR rtl-optimization/94740 * gcc.target/powerpc/pr94740.c: New test.
2020-04-30c: Fix ICE with _Atomic side-effect in nested fn param decls [PR94842]Jakub Jelinek4-4/+35
If there are _Atomic side-effects in the parameter declarations of non-nested function, when they are parsed, current_function_decl is NULL, the create_artificial_label created labels during build_atomic* are then adjusted by store_parm_decls through set_labels_context_r callback. Unfortunately, if such thing happens in nested function parameter declarations, while those decls are parsed current_function_decl is the parent function (and am not sure it is a good idea to temporarily clear it, some code perhaps should be aware it is in a nested function, or it can refer to variables from the parent function etc.) and that means store_param_decls through set_labels_context_r doesn't adjust anything. As those labels are emitted in the nested function body rather than in the parent, I think it is ok to override the context in those cases. 2020-04-30 Jakub Jelinek <jakub@redhat.com> PR c/94842 * c-decl.c (set_labels_context_r): In addition to context-less LABEL_DECLs adjust also LABEL_DECLs with context equal to parent function if any. (store_parm_decls): Adjust comment. * gcc.dg/pr94842.c: New test.
2020-04-30cse: Use simplify_replace_fn_rtx to process notes [PR94740]Richard Sandiford2-84/+47
cse_process_notes did a very simple substitution, which in the wrong circumstances could create non-canonical RTL and invalid MEMs. Various sticking plasters have been applied to cse_process_notes_1 to handle cases like ZERO_EXTEND, SIGN_EXTEND and UNSIGNED_FLOAT, but I think this PR is a plaster too far. The code is trying hard to avoid creating unnecessary rtl, which of course is a good thing. If we continue to do that, then we can end up changing subexpressions while keeping the containing rtx. This in turn means that validate_change will be a no-op on the containing rtx, even if its contents have changed. So in these cases we have to apply validate_change to the individual subexpressions. On the other hand, if we always apply validate_change to the individual subexpressions, we'll end up calling validate_change on something before it has been simplified and canonicalised. And that's one of the situations we're trying to avoid. There might be a middle ground in which we queue the validate_changes as part of a group, and so can cancel the pending validate_changes for subexpressions if there's a change in the outer expression. But that seems even more ad-hoc than the current code. It would also be quite an invasive change. I think the best thing is just to hook into the existing simplify_replace_fn_rtx function, keeping the REG and MEM handling from cse_process_notes_1 essentially unchanged. It can generate more redundant rtl when a simplification takes place, but it has the advantage of being relative well-used code (both directly and via simplify_replace_rtx). 2020-04-30 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR rtl-optimization/94740 * cse.c (cse_process_notes_1): Replace with... (cse_process_note_1): ...this new function, acting as a simplify_replace_fn_rtx callback to process_note. Handle only REGs and MEMs directly. Validate the MEM if cse_process_note changes its address. (cse_process_notes): Replace with... (cse_process_note): ...this new function. (cse_extended_basic_block): Update accordingly, iterating over the register notes and passing individual notes to cse_process_note.
2020-04-30rs6000, Fix header comment for intrinsic function _mm_movemask_epi8Carl Love2-1/+6
gcc/ChangeLog 2020-04-30 Carl Love <cel@us.ibm.com> * config/rs6000/emmintrin.h (_mm_movemask_epi8): Fix comment.
2020-04-30Adjust crontab.Jakub Jelinek2-3/+9
2020-04-30 Jakub Jelinek <jakub@redhat.com> * crontab: Snapshots from trunk are now GCC 11 related. Add GCC 10 snapshots from the respective branch.