Skip to content
Snippets Groups Projects
  1. Sep 01, 2021
    • Andrew Pinski's avatar
      Add MIPS Linux support to gcc.misc-tests/linkage.c (testsuite/51748) · 852fdc23
      Andrew Pinski authored
      This adds MIPS Linux support to gcc.misc-tests/linkage.exp.  Basically
      copying what was done for MIPS IRIX and changing the options to be correct.
      
      OK?
      
      gcc/testsuite/ChangeLog:
      
      	PR testsuite/51748
      	* gcc.misc-tests/linkage.exp: Add mips*-linux-* support.
      852fdc23
    • Martin Sebor's avatar
      Enable ranger and caching in pass_waccess. · ece28da9
      Martin Sebor authored
      gcc/ChangeLog:
      
      	* gimple-ssa-warn-access.cc (get_size_range): Add argument.
      	(check_access): Pass additional argument.
      	(check_memop_access): Remove template and make a member function.
      	(maybe_check_dealloc_call): Make a pass_waccess member function.
      	(class pass_waccess): Add, rename, and remove members.
      	(pass_waccess::pass_waccess): Adjust to name change.
      	(pass_waccess::~pass_waccess): Same.
      	(check_alloca): Make a member function.
      	(check_alloc_size_call): Same.
      	(check_strcat): Same.
      	(check_strncat): Same.
      	(check_stxcpy): Same.
      	(check_stxncpy): Same.
      	(check_strncmp): Same.
      	(maybe_warn_rdwr_sizes): Rename...
      	(pass_waccess::maybe_check_access_sizes): ...to this.
      	(pass_waccess::check_call): Adjust to name changes.
      	(pass_waccess::maybe_check_dealloc_call): Make a pass_waccess member
      	function.
      	(pass_waccess::execute): Adjust to name changes.
      	* gimple-ssa-warn-access.h (check_memop_access): Remove.
      	* pointer-query.cc (access_ref::phi): Handle null pointer.
      	(access_ref::inform_access): Same.
      	(pointer_query::put_ref): Modify a cached value, not a copy of it.
      	(pointer_query::dump): New function.
      	(compute_objsize_r): Avoid overwriting access_ref::bndrng.  Cache
      	more results.
      	* pointer-query.h (pointer_query::dump): Declare.
      	* tree-ssa-strlen.c (get_range): Simplify.  Use function query.
      	(dump_strlen_info): Use function query.
      	(printf_strlen_execute): Factor code out into pointer_query::put_ref.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Wstringop-overflow-11.c: Remove xfails.
      	* gcc.dg/Wstringop-overflow-12.c: Same.
      	* gcc.dg/Wstringop-overflow-43.c: Add xfails.
      	* gcc.dg/Wstringop-overflow-73.c: New test.
      ece28da9
    • Jason Merrill's avatar
      libcpp: __VA_OPT__ tweak · ac6e77aa
      Jason Merrill authored
      > We want to remove the latter <placemarker> but not the former one, and
      > the patch adds the vaopt_padding_tokens counter for it to control
      > how many placemarkers are removed on vaopt_state::END.
      > As can be seen in #c1 and #c2 of the PR, I've tried various approaches,
      > but neither worked out for all the cases except the posted one.
      
      I notice that the second placemarker you mention is avoid_paste, which seems
      relevant.  This seems to also work, at least it doesn't seem to break any of
      the va_opt tests.
      
      2021-09-01  Jason Merrill  <jason@redhat.com>
      
      	* macro.c (replace_args): When __VA_OPT__ is on the LHS of ##,
      	remove trailing avoid_paste tokens.
      ac6e77aa
    • Jakub Jelinek's avatar
      libcpp: __VA_OPT__ p1042r1 placemarker changes [PR101488] · e928cf47
      Jakub Jelinek authored
      So, besides missing #__VA_OPT__ patch for which I've posted patch last week,
      P1042R1 introduced some placemarker changes for __VA_OPT__, most notably
      the addition of before "removal of placemarker tokens," rescanning ...
      and the
       #define H4(X, ...) __VA_OPT__(a X ## X) ## b
      H4(, 1)  // replaced by a b
      example mentioned there where we replace it currently with ab
      
      The following patch are the minimum changes (except for the
      __builtin_expect) that achieve the same preprocessing between current
      clang++ and patched gcc on all the testcases I've tried (i.e. gcc __VA_OPT__
      testsuite in c-c++-common/cpp/va-opt* including the new test and the clang
      clang/test/Preprocessor/macro_va_opt* testcases).
      
      At one point I was trying to implement the __VA_OPT__(args) case as if
      for non-empty __VA_ARGS__ it expanded as if __VA_OPT__( and ) were missing,
      but from the tests it seems that is not how it should work, in particular
      if after (or before) we have some macro argument and it is not followed
      (or preceded) by ##, then it should be macro expanded even when __VA_OPT__
      is after ## or ) is followed by ##.  And it seems that not removing any
      padding tokens isn't possible either, because the expansion of the arguments
      typically has a padding token at the start and end and those at least
      according to the testsuite need to go.  It is unclear if it would be enough
      to remove just one or if all padding tokens should be removed.
      Anyway, e.g. the previous removal of all padding tokens at the end of
      __VA_OPT__ is undesirable, as it e.g. eats also the padding tokens needed
      for the H4 example from the paper.
      
      2021-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR preprocessor/101488
      	* macro.c (replace_args): Fix up handling of CPP_PADDING tokens at the
      	start or end of __VA_OPT__ arguments when preceeded or followed by ##.
      
      	* c-c++-common/cpp/va-opt-3.c: Adjust expected output.
      	* c-c++-common/cpp/va-opt-7.c: New test.
      e928cf47
    • Marek Polacek's avatar
      c++: Add test for fixed PR [PR101592] · 7c5003c6
      Marek Polacek authored
      Fixed by my c++/99701 patch.
      
      	PR c++/101592
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/warn/Wlogical-op-3.C: New test.
      7c5003c6
    • Iain Sandoe's avatar
      libiberty, configure, Darwin: Avoid detecting deprecated sbrk. · fbb334a6
      Iain Sandoe authored
      
      Darwin provides an implementation of sbrk, which is detected by
      the configuration process.  However, it is deprecated which leads
      to build warnings.  The malloc-based implementation is more
      suitable.  This patch removes sbrk from the functions searched
      for Darwin.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      libiberty/ChangeLog:
      
      	* configure: Regenerate.
      	* configure.ac: Do not search for sbrk on Darwin.
      	* xmalloc.c: Do not declare sbrk unless it has been found
      	by configure.
      fbb334a6
    • Harald Anlauf's avatar
      Fortran - improve wording of error message · a88280cf
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/56985
      	* resolve.c (resolve_common_vars): Fix grammar and improve wording
      	of error message rejecting an unlimited polymorphic in COMMON.
      a88280cf
    • Sebastian Huber's avatar
      Fix arm target build with inhibit_libc · 7a6f40d0
      Sebastian Huber authored
      Do not declare abort in "libgcc/unwind-arm-common.inc" since it is already
      provided by "tsystem.h".  It fixes the following build error:
      
      In file included from libgcc/config/arm/unwind-arm.c:144:
      libgcc/unwind-arm-common.inc:55:24: error: macro "abort" passed 1 arguments, but takes just 0
         55 | extern void abort (void);
      
      libgcc/
      
      	* unwind-arm-common.inc (abort): Remove.
      7a6f40d0
    • Thomas Schwinge's avatar
      Simplify 'gcc/tree.c:walk_tree_1' handling of 'OMP_CLAUSE' · 424e4601
      Thomas Schwinge authored
      No behavioral change, other than that for a few clauses, operands are now
      walked in a different order, and 'OMP_CLAUSE_ERROR' now no longer runs into
      'default: gcc_unreachable ();' here (but instead will at some later stage).
      
      Follow-up for r110243 (commit aaf46ef9)
      "Fix PR 25886.  Convert OMP_CLAUSE_* into sub-codes".
      
      	gcc/
      	* tree.c (walk_tree_1) <OMP_CLAUSE>: Simplify.
      424e4601
    • Iain Sandoe's avatar
      Objective-C, NeXT: Fix messenging non-aggregate return-in-memory. · 1cef3039
      Iain Sandoe authored
      
      When a method returns a type that the platform ABI says should be
      returned in memory, and that is done by a hidden 'sret' parameter,
      the message send calls must be adjusted to inform the runtime that
      the sret parameter is present.  As reported in the PR, this is not
      working for non-aggregate types that use this mechanism.  The fix
      here is to adjust the logic such that all return values that flag
      'in memory' are considered to use the mechanism *unless* they
      provide a struct_value_rtx *and* the return object is an aggregate.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      PR objc/101718 - Objective-C frontend emits wrong code to call methods returning scalar types returned in memory
      
      	PR objc/101718
      
      gcc/objc/ChangeLog:
      
      	* objc-next-runtime-abi-02.c (build_v2_build_objc_method_call):
      	Revise for cases where scalar objects use an sret parameter.
      	(next_runtime_abi_02_build_objc_method_call): Likwise.
      1cef3039
    • Iain Sandoe's avatar
      C-family: Add attribute 'unavailable'. · 8433baad
      Iain Sandoe authored
      
      If an interface is marked 'deprecated' then, presumably, at some point it
      will be withdrawn and no longer available.  The 'unavailable' attribute
      makes it possible to mark up interfaces to indicate this status.  It is used
      quite extensively in some codebases where a single set of headers can be used
      to permit code generation for multiple system versions.
      
      From a configuration perspective, it also allows a compile test to determine
      that an interface is missing - rather than requiring a link test.
      
      The implementation follows the pattern of attribute deprecated, but produces
      an error (where deprecation produces a warning).
      
      This attribute has been implemented in clang for some years.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/c-family/ChangeLog:
      
      	* c-attribs.c (handle_unavailable_attribute): New.
      
      gcc/c/ChangeLog:
      
      	* c-decl.c (enum deprecated_states): Add unavailable state.
      	(merge_decls): Copy unavailability.
      	(quals_from_declspecs): Handle unavailable case.
      	(start_decl): Amend the logic handling suppression of nested
      	deprecation states to include unavailability.
      	(smallest_type_quals_location): Amend comment.
      	(grokdeclarator): Handle the unavailable deprecation state.
      	(declspecs_add_type): Set TREE_UNAVAILABLE from the decl specs.
      	* c-tree.h (struct c_declspecs): Add unavailable_p.
      	* c-typeck.c (build_component_ref): Handle unavailability.
      	(build_external_ref): Likewise.
      
      gcc/cp/ChangeLog:
      
      	* call.c (build_over_call): Handle unavailable state in addition to
      	deprecation.
      	* class.c (type_build_ctor_call): Likewise.
      	(type_build_dtor_call): Likewise.
      	* cp-tree.h: Rename cp_warn_deprecated_use to
      	cp_handle_deprecated_or_unavailable.
      	* decl.c (duplicate_decls): Merge unavailability.
      	(grokdeclarator): Handle unavailability in addition to deprecation.
      	(type_is_unavailable): New.
      	(grokparms): Handle unavailability in addition to deprecation.
      	* decl.h (enum deprecated_states): Add
      	UNAVAILABLE_DEPRECATED_SUPPRESS.
      	* decl2.c (cplus_decl_attributes): Propagate unavailability to
      	templates.
      	(cp_warn_deprecated_use): Rename to ...
      	(cp_handle_deprecated_or_unavailable): ... this and amend to handle
      	the unavailable case. It remains a warning in the case of deprecation
      	but becomes an error in the case of unavailability.
      	(cp_warn_deprecated_use_scopes): Handle unavailability.
      	(mark_used): Likewise.
      	* parser.c (cp_parser_template_name): Likewise.
      	(cp_parser_template_argument): Likewise.
      	(cp_parser_parameter_declaration_list): Likewise.
      	* typeck.c (build_class_member_access_expr): Likewise.
      	(finish_class_member_access_expr): Likewise.
      	* typeck2.c (build_functional_cast_1): Likewise.
      
      gcc/ChangeLog:
      
      	* doc/extend.texi: Document unavailable attribute.
      	* print-tree.c (print_node): Handle unavailable attribute.
      	* tree-core.h (struct tree_base): Add a bit to carry unavailability.
      	* tree.c (error_unavailable_use): New.
      	* tree.h (TREE_UNAVAILABLE): New.
      	(error_unavailable_use): New.
      
      gcc/objc/ChangeLog:
      
      	* objc-act.c (objc_add_property_declaration): Register unavailable
      	attribute.
      	(maybe_make_artificial_property_decl): Set available.
      	(objc_maybe_build_component_ref): Generalise to the method prototype
      	to count availability.
      	(objc_build_class_component_ref): Likewise.
      	(build_private_template): Likewise.
      	(objc_decl_method_attributes): Handle unavailable attribute.
      	(lookup_method_in_hash_lists): Amend comments.
      	(objc_finish_message_expr): Handle unavailability in addition to
      	deprecation.
      	(start_class): Likewise.
      	(finish_class): Likewise.
      	(lookup_protocol): Likewise.
      	(objc_declare_protocol): Likewise.
      	(start_protocol): Register unavailable attribute.
      	(really_start_method): Likewise.
      	(objc_gimplify_property_ref): Emit error on encountering an
      	unavailable entity (and a warning for a deprecated one).
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/ext/attr-unavailable-1.C: New test.
      	* g++.dg/ext/attr-unavailable-2.C: New test.
      	* g++.dg/ext/attr-unavailable-3.C: New test.
      	* g++.dg/ext/attr-unavailable-4.C: New test.
      	* g++.dg/ext/attr-unavailable-5.C: New test.
      	* g++.dg/ext/attr-unavailable-6.C: New test.
      	* g++.dg/ext/attr-unavailable-7.C: New test.
      	* g++.dg/ext/attr-unavailable-8.C: New test.
      	* g++.dg/ext/attr-unavailable-9.C: New test.
      	* gcc.dg/attr-unavailable-1.c: New test.
      	* gcc.dg/attr-unavailable-2.c: New test.
      	* gcc.dg/attr-unavailable-3.c: New test.
      	* gcc.dg/attr-unavailable-4.c: New test.
      	* gcc.dg/attr-unavailable-5.c: New test.
      	* gcc.dg/attr-unavailable-6.c: New test.
      	* obj-c++.dg/attributes/method-unavailable-1.mm: New test.
      	* obj-c++.dg/attributes/method-unavailable-2.mm: New test.
      	* obj-c++.dg/attributes/method-unavailable-3.mm: New test.
      	* obj-c++.dg/property/at-property-unavailable-1.mm: New test.
      	* obj-c++.dg/property/at-property-unavailable-2.mm: New test.
      	* obj-c++.dg/property/dotsyntax-unavailable-1.mm: New test.
      	* objc.dg/attributes/method-unavailable-1.m: New test.
      	* objc.dg/attributes/method-unavailable-2.m: New test.
      	* objc.dg/attributes/method-unavailable-3.m: New test.
      	* objc.dg/property/at-property-unavailable-1.m: New test.
      	* objc.dg/property/at-property-unavailable-2.m: New test.
      	* objc.dg/property/dotsyntax-unavailable-1.m: New test.
      8433baad
    • Iain Sandoe's avatar
      coroutines : Add a missed begin/finish else clause to the codegen. · 21b4d0ef
      Iain Sandoe authored
      
      Minor code-gen correction.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (build_actor_fn): Add begin/finish clauses
      	to the initial test in the actor function.
      21b4d0ef
    • Iain Sandoe's avatar
      coroutines: No cleanups on goto statements. · 8406ed9a
      Iain Sandoe authored
      
      Minor cleanup, this is statement not an expression, we do not
      need to use finish_expr_stmt here.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (await_statement_walker): Use build_stmt and
      	add_stmt instead of build1 and finish_expr_stmt.
      8406ed9a
    • Iain Buclaw's avatar
      libphobos: Update comment for DRUNTIME_OS_SOURCES · fcc0c84c
      Iain Buclaw authored
      libphobos/ChangeLog:
      
      	* m4/druntime/os.m4: Update comment for DRUNTIME_OS_SOURCES.
      fcc0c84c
    • Iain Buclaw's avatar
      libphobos: Don't add zlib when ENABLE_LIBDRUNTIME_ONLY · 53cfed5c
      Iain Buclaw authored
      The D run-time library does not depend on zlib, so only include it in
      the library when Phobos is being built as well.
      
      libphobos/ChangeLog:
      
      	* src/Makefile.am: Don't add zlib when ENABLE_LIBDRUNTIME_ONLY.
      	* src/Makefile.in: Regenerate.
      53cfed5c
    • Jakub Jelinek's avatar
      vectorizer: Fix up vectorization using WIDEN_MINUS_EXPR [PR102124] · bea07159
      Jakub Jelinek authored
      The following testcase is miscompiled on aarch64-linux at -O3 since the
      introduction of WIDEN_MINUS_EXPR.
      The problem is if the inner type (half_type) is unsigned and the result
      type in which the subtraction is performed (type) has precision more than
      twice as larger as the inner type's precision.
      For other widening operations like WIDEN_{PLUS,MULT}_EXPR, if half_type
      is unsigned, the addition/multiplication result in itype is also unsigned
      and needs to be zero-extended to type.
      But subtraction is special, even when half_type is unsigned, the subtraction
      behaves as signed (also regardless of whether the result type is signed or
      unsigned), 0xfeU - 0xffU is -1 or 0xffffffffU, not 0x0000ffff.
      
      I think it is better not to use mixed signedness of types in
      WIDEN_MINUS_EXPR (have unsigned vector of operands and signed result
      vector), so this patch instead adds another cast to make sure we always
      sign-extend the result from itype to type if type is wider than itype.
      
      2021-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/102124
      	* tree-vect-patterns.c (vect_recog_widen_op_pattern): For ORIG_CODE
      	MINUS_EXPR, if itype is unsigned with smaller precision than type,
      	add an extra cast to signed variant of itype to ensure sign-extension.
      
      	* gcc.dg/torture/pr102124.c: New test.
      bea07159
    • Martin Liska's avatar
      graph output: use better colors for edges · a61623d9
      Martin Liska authored
      gcc/ChangeLog:
      
      	* graph.c (draw_cfg_node_succ_edges): Do not color fallthru
      	  edges and rather use colors for TRUE and FALSE edges.
      a61623d9
    • Richard Biener's avatar
      tree-optimization/93491 - avoid PRE of trapping calls across exits · 13a43a90
      Richard Biener authored
      This makes us avoid PREing calls that could trap across other
      calls that might not return.  The PR88087 testcase has exactly
      such case so I've refactored the testcase to contain a valid PRE.
      I've also adjusted PRE to not consider pure calls possibly
      not returning in line with what we do elsewhere.
      
      Note we don't have a good idea whether a function always returns
      normally or whether its body is known to never trap.  That's
      something IPA could compute.
      
      2021-09-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/93491
      	* tree-ssa-pre.c (compute_avail): Set BB_MAY_NOTRETURN
      	after processing the stmt itself.  Do not consider
      	pure functions possibly not returning.  Properly avoid
      	adding possibly trapping calls to EXP_GEN when there's
      	a preceeding possibly not returning call.
      	* tree-ssa-sccvn.c (vn_reference_may_trap): Conservatively
      	not handle calls.
      
      	* gcc.dg/torture/pr93491.c: New testcase.
      	* gcc.dg/tree-ssa/pr88087.c: Change to valid PRE opportunity.
      13a43a90
    • Richard Biener's avatar
      tree-optimization/102139 - fix SLP DR base alignment · 153766ec
      Richard Biener authored
      When doing whole-function SLP we have to make sure the recorded
      base alignments we compute as the maximum alignment seen for a
      base anywhere in the function is actually valid at the point
      we want to make use of it.
      
      To make this work we now record the stmt the alignment was derived
      from in addition to the DRs innermost behavior and we use a
      dominance check to verify the recorded info is valid when doing
      BB vectorization.  For this to work for groups inside a BB that are
      separate by a call that might not return we now store the DR
      analysis group-id permanently and use that for an additional check
      when the DRs are in the same BB.
      
      2021-08-31  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/102139
      	* tree-vectorizer.h (vec_base_alignments): Adjust hash-map
      	type to record a std::pair of the stmt-info and the innermost
      	loop behavior.
      	(dr_vec_info::group): New member.
      	* tree-vect-data-refs.c (vect_record_base_alignment): Adjust.
      	(vect_compute_data_ref_alignment): Verify the recorded
      	base alignment can be used.
      	(data_ref_pair): Remove.
      	(dr_group_sort_cmp): Adjust.
      	(vect_analyze_data_ref_accesses): Store the group-ID in the
      	dr_vec_info and operate on a vector of dr_vec_infos.
      
      	* gcc.dg/torture/pr102139.c: New testcase.
      153766ec
    • YunQiang Su's avatar
      MAINTAINERS: Add YunQiang Su for write after approval · ea1a1642
      YunQiang Su authored
      ChangeLog:
      	* MAINTAINERS: Add myself for write after approval.
      ea1a1642
    • YunQiang Su's avatar
      md/define_c_enum: support value assignation · 7c922606
      YunQiang Su authored
      Currently, the enums from define_c_enum and define_enum can only
      has values one by one from 0.
      
      In fact we can support the behaviour just like C, aka like
        (define_enum "mips_isa" [(mips1 1) mips2 (mips32 32) mips32r2]),
      then we can get
        enum mips_isa {
          MIPS_ISA_MIPS1 = 1,
          MIPS_ISA_MIPS2 = 2,
          MIPS_ISA_MIPS32 = 32,
          MIPS_ISA_MIPS32R2 = 33
        };
      
      gcc/ChangeLog:
      	* read-md.c (md_reader::handle_enum): support value assignation.
      	* doc/md.texi: record define_c_enum value assignation support.
      7c922606
    • Jakub Jelinek's avatar
      bswap: Fix up bswap_view_convert handling [PR102141] · 45ff1251
      Jakub Jelinek authored
      bswap_view_convert is used twice in spots where gsi_insert_before is the
      right thing, but in the last one it wants to insert preparation stmts
      for the VIEW_CONVERT_EXPR emitted with gsi_insert_after, where at the
      gsi we still need to insert bswap_stmt and maybe mask_stmt whose lhs
      the preparation stmts will use.
      So, this patch adds a BEFORE argument to the function and emits the
      preparation statements before or after depending on that.
      
      2021-09-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/102141
      	* gimple-ssa-store-merging.c (bswap_view_convert): Add BEFORE
      	argument.  If false, emit stmts after gsi instead of before, and
      	with GSI_NEW_STMT.
      	(bswap_replace): Adjust callers.  When converting output of bswap,
      	emit VIEW_CONVERT prepratation stmts after a copy of gsi instead
      	of before it.
      
      	* gcc.dg/pr102141.c: New test.
      45ff1251
    • Richard Biener's avatar
      tree-optimization/102149 - add testcase for fixed bug · e6bd9c42
      Richard Biener authored
      This adds the testcase from the PR.
      
      2021-09-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/102149
      	* gcc.dg/torture/pr102149.c: New testcase.
      e6bd9c42
    • Roger Sayle's avatar
      C: PR c/79412: Poison decls with error_mark_node after type mismatch · 82368522
      Roger Sayle authored
      This patch fixes an ICE during error-recovery regression in the C front-end.
      The symptom is that the middle-end's sanity checking assertions fail during
      gimplification when being asked to increment an array, which is non-sense.
      The issue is that the C-front end has detected the type mismatch and
      reported an error to the user, but hasn't provided any indication of this
      to the middle-end, simply passing bogus trees that the optimizers recognize
      as invalid.
      
      This appears to be a frequently reported ICE with 94730, 94731, 101036
      and 101365 all marked as duplicates.
      
      I believe the correct (polite) fix is to mark the mismatched types as
      problematic/dubious in the front-end, when the error is spotted, so that
      the middle-end has a heads-up and can be a little more forgiving.  This
      patch to c-decl.c's duplicate_decls sets (both) mismatched types to
      error_mark_node if they are significantly different, and we've issued
      an error message.  Alas, this is too punitive for FUNCTION_DECLs where
      we store return types, parameter lists, parameter types and attributes
      in the type, but fortunately the middle-end is already more cautious
      about trusting possibly suspect function types.
      
      This fix required one minor change to the testsuite, typedef-var-2.c
      where after conflicting type definitions, we now no longer assume that
      the (first or) second definition is the correct one.  This change only
      affects the behaviour after seen_error(), so should be relatively safe.
      
      2021-09-01  Roger Sayle  <roger@nextmovesoftware.com>
      	    Joseph Myers  <joseph@codesourcery.com>
      
      gcc/c/ChangeLog
      	PR c/79412
      	* c-decl.c (duplicate_decls): On significant mismatches, mark the
      	types of both (non-function) decls as error_mark_node, so that the
      	middle-end can see the code is malformed.
      	(free_attr_access_data): Don't process if the type has been set to
      	error_mark_node.
      
      gcc/testsuite/ChangeLog
      	PR c/79412
      	* gcc.dg/pr79412.c: New test case.
      	* gcc.dg/typedef-var-2.c: Update expeted errors.
      82368522
    • liuhongt's avatar
      Get rid of all float-int special cases in validate_subreg. · d2874d90
      liuhongt authored
      gcc/ChangeLog:
      
      	* emit-rtl.c (validate_subreg): Get rid of all float-int
      	special cases.
      d2874d90
    • liuhongt's avatar
      Revert "Make sure we're playing with integral modes before call extract_integral_bit_field." · 508fa61b
      liuhongt authored
      This reverts commit 7218c2ec.
      
           PR middle-end/102133
      508fa61b
    • GCC Administrator's avatar
      Daily bump. · 6d51ee43
      GCC Administrator authored
      6d51ee43
  2. Aug 31, 2021
    • Jason Merrill's avatar
      c++: Various small fixes · 9c6344c1
      Jason Merrill authored
      A copy-paste error, a couple of missed checks to guard undefined accesses,
      and we don't need to use type_uses_auto to extract the auto node we just
      built.
      
      gcc/cp/ChangeLog:
      
      	* coroutines.cc (flatten_await_stmt): Fix copyo.
      	* decl.c (reshape_init_class): Simplify.
      	* module.cc (module_state::read_language): Add null check.
      	* parser.c (build_range_temp): Avoid type_uses_auto.
      	(cp_parser_class_specifier_1): Add null check.
      9c6344c1
    • Harald Anlauf's avatar
      Fortran - extend set of substring expressions handled in length simplification · e4cb3bb9
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/100950
      	* simplify.c (substring_has_constant_len): Minimize checks for
      	substring expressions being allowed.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/100950
      	* gfortran.dg/pr100950.f90: Extend coverage.
      e4cb3bb9
    • Jonathan Wakely's avatar
      libstdc++: Add valid range checks to std::span constructors [PR98421] · ef7becc9
      Jonathan Wakely authored
      
      Signed-off-by: default avatarJonathan Wakely <jwakely@redhat.com>
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/98421
      	* include/std/span (span(Iter, size_type), span(Iter, Iter)):
      	Add valid range checks.
      	* testsuite/23_containers/span/cons_1_assert_neg.cc: New test.
      	* testsuite/23_containers/span/cons_2_assert_neg.cc: New test.
      ef7becc9
    • Patrick Palka's avatar
      c++: check arity before deduction w/ explicit targs [PR12672] · f1e73199
      Patrick Palka authored
      During overload resolution, when the arity of a function template
      clearly disagrees with the arity of the call, no specialization of the
      function template could yield a viable candidate.  The deduction routine
      type_unification_real already notices this situation, but not before
      it substitutes explicit template arguments into the template, a step
      which could induce a hard error.  Although it's necessary to perform
      this substitution first in order to check arity perfectly (since the
      substitution can e.g. expand a non-trailing parameter pack), in most
      cases we can determine ahead of time whether there's an arity
      disagreement without needing to perform deduction at all.
      
      To that end, this patch implements an (approximate) arity check in
      add_template_candidate_real that guards actual deduction.  It's enabled
      only when there are explicit template arguments since that's when
      deduction can force otherwise avoidable template instantiations.  (I
      experimented with enabling it unconditionally as an optimization, and
      observed some improvements to compile time of about 5% but also some
      slowdowns of about the same magnitude, so kept it conditional.)
      
      In passing, this adds a least_p parameter to arity_rejection for sake
      of consistent diagnostics with unify_arity.
      
      A couple of testcases needed to be adjusted so that deduction continues
      to occur as intended after this change.  Except in unify6.C, where we
      were expecting foo<void ()> to be ill-formed due to substitution
      forming a function type with an added 'const', but ISTM this is
      permitted by [dcl.fct]/7, so I changed the test accordingly.
      
      	PR c++/12672
      
      gcc/cp/ChangeLog:
      
      	* call.c (rejection_reason::call_varargs_p): Rename this
      	previously unused member to ...
      	(rejection_reason::least_p): ... this.
      	(arity_rejection): Add least_p parameter.
      	(add_template_candidate_real): When there are explicit
      	template arguments, check that the arity of the call agrees with
      	the arity of the function before attempting deduction.
      	(print_arity_information): Add least_p parameter.
      	(print_z_candidate): Adjust call to print_arity_information.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/decltype29.C: Adjust.
      	* g++.dg/template/error56.C: Adjust.
      	* g++.old-deja/g++.pt/unify6.C: Adjust.
      	* g++.dg/template/explicit-args7.C: New test.
      f1e73199
    • Thomas Schwinge's avatar
      Fix 'OMP_CLAUSE_TILE' operands handling in 'gcc/tree.c:walk_tree_1' · 92dc5d84
      Thomas Schwinge authored
      In r245300 (commit 02889d23)
      "OpenACC tile clause support" that one had changed to three operands,
      similar to 'OMP_CLAUSE_COLLAPSE'.
      
      There is no (existing) test case where this seems to matter (likewise
      for 'OMP_CLAUSE_COLLAPSE'), but it's good to be consistent.
      
      	gcc/
      	* tree.c (walk_tree_1) <OMP_CLAUSE_TILE>: Handle three operands.
      92dc5d84
    • Thomas Schwinge's avatar
      [OMP] Standardize on 'omp_privatize_by_reference' · 22e6b327
      Thomas Schwinge authored
      ... instead of 'omp_is_reference' vs.
      'lang_hooks.decls.omp_privatize_by_reference'.
      
      	gcc/
      	* omp-general.h (omp_is_reference): Rename to...
      	(omp_privatize_by_reference): ... this.  Adjust all users...
      	* omp-general.c: ... here, ...
      	* gimplify.c: ... here, ...
      	* omp-expand.c: ... here, ...
      	* omp-low.c: ... here.
      22e6b327
    • Martin Sebor's avatar
      Avoid valid Coverity warning for comparing array to zero. · b3aa3288
      Martin Sebor authored
      	* gimple-ssa-warn-access.cc (maybe_warn_alloc_args_overflow): Test
      	pointer element for equality to zero, not that of the cotaining
      	array.
      b3aa3288
    • Martin Sebor's avatar
      Disable gcc_rich_location copying and assignment. · e4d2305a
      Martin Sebor authored
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_selection_statement): Use direct initialization
      	instead of copy.
      
      gcc/ChangeLog:
      
      	* gcc-rich-location.h (gcc_rich_location): Make ctor explicit.
      
      libcpp/ChangeLog:
      
      	* include/line-map.h (class rich_location): Disable copying and
      	assignment.
      e4d2305a
    • Martin Sebor's avatar
      Add attribute returns nonnull to get_range_query. · e45d5b6b
      Martin Sebor authored
      gcc/ChangeLog:
      	* function.h (function): Add comments.
      	(get_range_query): Same.  Add attribute returns nonnull.
      e45d5b6b
    • Jonathan Wakely's avatar
      libstdc++: Fix broken autoconf check for O_NONBLOCK · 1cacdef0
      Jonathan Wakely authored
      
      Signed-off-by: default avatarJonathan Wakely <jwakely@redhat.com>
      
      libstdc++-v3/ChangeLog:
      
      	* configure.ac: Fix checks for F_GETFL, F_SETFL and O_NONBLOCK.
      	* configure: Regenerate.
      1cacdef0
    • Jonathan Wakely's avatar
      libstdc++: Remove redundant noexcept-specifier on definitions · f63e86f7
      Jonathan Wakely authored
      
      These destructors are noexcept anyway. I removed the redundant noexcept
      from the error_category destructor's declaration in r0-123475, but
      didn't remove it from the defaulted definition in system_error.cc. That
      causes warnings if the library is built with Clang.
      
      This removes the redundant noexcept from ~error_category and
      ~system_error and adds tests to ensure they really are noexcept.
      
      Signed-off-by: default avatarJonathan Wakely <jwakely@redhat.com>
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++11/system_error.cc (error_category::~error_category()):
      	Remove noexcept-specifier.
      	(system_error::~system_error()): Likewise.
      	* testsuite/19_diagnostics/error_category/noexcept.cc: New test.
      	* testsuite/19_diagnostics/system_error/noexcept.cc: New test.
      f63e86f7
    • Jonathan Wakely's avatar
      libstdc++: Add missing return for atomic timed wait [PR102074] · 763eb1f1
      Jonathan Wakely authored
      
      This adds a missing return statement to the non-futex wait-until
      operation.
      
      Signed-off-by: default avatarJonathan Wakely <jwakely@redhat.com>
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/102074
      	* include/bits/atomic_timed_wait.h (__timed_waiter_pool)
      	[!_GLIBCXX_HAVE_PLATFORM_TIMED_WAIT]: Add missing return.
      763eb1f1
    • Jonathan Wakely's avatar
      libstdc++: Improve error handling in Net TS name resolution · feec7ef6
      Jonathan Wakely authored
      
      Signed-off-by: default avatarJonathan Wakely <jwakely@redhat.com>
      
      libstdc++-v3/ChangeLog:
      
      	* include/experimental/internet (__make_resolver_error_code):
      	Handle EAI_SYSTEM errors.
      	(basic_resolver_results): Use __make_resolver_error_code. Use
      	Glibc NI_MAXHOST and NI_MAXSERV values for buffer sizes.
      feec7ef6
Loading