Skip to content
Snippets Groups Projects
  1. Nov 06, 2020
    • Iain Sandoe's avatar
      Objective-C/C++ (parsers) : Update @property attribute parsing. · 9a34a5cc
      Iain Sandoe authored
      At present, we are missing parsing and checking for around
      half of the property attributes in use.  The existing ad hoc scheme
      for the parser's communication with the Objective C validation
      is not suitable for extending to cover all the missing cases.
      
      Additionally:
      
      1/ We were declaring errors in two cases that the reference
         implementation warns (or is silent).
      
         I've elected to warn for both those cases, (Wattributes) it
         could be that we should implement Wobjc-xxx-property warning
         masks (TODO).
      
      2/ We were emitting spurious complaints about missing property
         attributes when these were not being parsed because we gave
         up on the first syntax error.
      
      3/ The quality of the diagnostic locations was poor (that's
         true for much of Objective-C, we will have to improve it as
         we modernise areas).
      
      We continue to attempt to keep the code, warning and error output
      similar (preferably identical output) between the C and C++ front
      ends.
      
      The interface to the Objective-C-specific parts of the parsing is
      simplified to a vector of parsed (but not fully-checked) property
      attributes, this will simplify the addition of new attributes.
      
      gcc/c-family/ChangeLog:
      
      	* c-objc.h (enum objc_property_attribute_group): New
      	(enum objc_property_attribute_kind): New.
      	(OBJC_PROPATTR_GROUP_MASK): New.
      	(struct property_attribute_info): Small class encapsulating
      	parser output from property attributes.
      	(objc_prop_attr_kind_for_rid): New
      	(objc_add_property_declaration): Simplify interface.
      	* stub-objc.c (enum rid): Dummy type.
      	(objc_add_property_declaration): Simplify interface.
      	(objc_prop_attr_kind_for_rid): New.
      
      gcc/c/ChangeLog:
      
      	* c-parser.c (c_parser_objc_at_property_declaration):
      	Improve parsing fidelity. Associate better location info
      	with @property attributes.  Clean up the interface to
      	objc_add_property_declaration ().
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_objc_at_property_declaration):
      	Improve parsing fidelity. Associate better location info
      	with @property attributes.  Clean up the interface to
      	objc_add_property_declaration ().
      
      gcc/objc/ChangeLog:
      
      	* objc-act.c (objc_prop_attr_kind_for_rid): New.
      	(objc_add_property_declaration): Adjust to consume the
      	parser output using a vector of parsed attributes.
      
      gcc/testsuite/ChangeLog:
      
      	* obj-c++.dg/property/at-property-1.mm: Adjust expected
      	diagnostics.
      	* obj-c++.dg/property/at-property-29.mm: Likewise.
      	* obj-c++.dg/property/at-property-4.mm: Likewise.
      	* obj-c++.dg/property/property-neg-2.mm: Likewise.
      	* objc.dg/property/at-property-1.m: Likewise.
      	* objc.dg/property/at-property-29.m: Likewise.
      	* objc.dg/property/at-property-4.m: Likewise.
      	* objc.dg/property/at-property-5.m: Likewise.
      	* objc.dg/property/property-neg-2.m: Likewise.
      9a34a5cc
    • Jakub Jelinek's avatar
      c++: Propagate attributes to clones in duplicate_decls [PR67453] · 6c282c14
      Jakub Jelinek authored
      On the following testcase where the cdtor attributes aren't on the
      in-class declaration but on an out-of-class definition, the cdtors
      have their clones created from the in-class declaration, and later on
      duplicate_decls updates attributes on the abstract cdtors, but nothing
      propagates them to the clones.
      
      2020-11-06  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/67453
      	* decl.c (duplicate_decls): Propagate DECL_ATTRIBUTES and
      	DECL_PRESERVE_P from olddecl to its clones if any.
      
      	* g++.dg/ext/attr-used-2.C: New test.
      6c282c14
    • Iain Sandoe's avatar
      Darwin: Darwin 20 is to be macOS 11 (Big Sur). · 556ab512
      Iain Sandoe authored
      As per Nigel Tufnel's assertion "... this one goes to 11".
      
      The various parts of the code that deal with mapping Darwin versions
      to macOS (X) versions need updating to deal with  a major version of
      11.
      
      So now we have, for example:
      
      Darwin  4 => macOS (X) 10.0
      …
      Darwin 14 => macOS (X) 10.10
      ...
      Darwin 19 => macOS (X) 10.15
      
      Darwin 20 => macOS  11.0
      
      Because of the historical duplication of the "10" in macOSX 10.xx and
      the number of tools that expect this, it is likely that system tools will
      allow macos11.0 and/or macosx11.0 (despite that the latter makes little
      sense).
      
      Update the link test to cover Catalina (Darwin19/10.15) and
      Big Sur (Darwin20/11.0).
      
      gcc/ChangeLog:
      
      	* config/darwin-c.c: Allow for Darwin20 to correspond to macOS 11.
      	* config/darwin-driver.c: Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/darwin-minversion-link.c: Allow for Darwin19 (macOS 10.15)
      	and Darwin20 (macOS 11.0).
      556ab512
    • Richard Biener's avatar
      rework PRE PHI translation cache · 600be7f0
      Richard Biener authored
      Turns out its size and time requirements can be stripped down
      dramatically.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (expr_pred_trans_d): Modify so elements
      	are embedded rather than allocated.  Remove hashval member,
      	make all members integers.
      	(phi_trans_add): Adjust accordingly.
      	(phi_translate): Likewise.  Deal with re-allocation
      	of the table.
      600be7f0
    • Andrew MacLeod's avatar
      Combine new calculated ranges with existing range. · 129e1a8a
      Andrew MacLeod authored
      When a range is recalculated, retain what was previously known as IL changes
      can produce different results from un-executed code.   This also paves
      the way for external injection of ranges.
      
      	gcc/
      	PR tree-optimization/97737
      	PR tree-optimization/97741
      	* gimple-range.cc: (gimple_ranger::range_of_stmt): Intersect newly
      	calculated ranges with the existing known global range.
      	gcc/testsuite/
      	* gcc.dg/pr97737.c: New.
      	* gcc.dg/pr97741.c: New.
      129e1a8a
    • Darius Galis's avatar
      Add PC as control register · 25126a28
      Darius Galis authored
      gcc/
      	* config/rx/rx.md (CTRLREG_PC): Add.
      	* config/rx/rx.c (CTRLREG_PC): Add
      	(rx_expand_builtin_mvtc): Add warning: PC register cannot
      	be used as dest.
      25126a28
    • Nathan Sidwell's avatar
      core: Rename DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN · ba649812
      Nathan Sidwell authored
      In cleaning up C++'s handling of hidden decls, I renamed its
      DECL_BUILTIN_P, which checks for loc == BUILTINS_LOCATION to
      DECL_UNDECLARED_BUILTIN_P, because the location gets updated, if user
      source declares the builtin, and the predicate no longer holds.  The
      original name was confusing me.  (The builtin may still retain builtin
      properties in the redeclaration, and other predicates can still detect
      that.)
      
      I discovered that tree.h had its own variant 'DECL_IS_BUILTIN', which
      behaves in (almost) the same manner.  And therefore has the same
      mutating behaviour.
      
      This patch deletes the C++ one, and renames tree.h's to
      DECL_IS_UNDECLARED_BUILTIN, to emphasize its non-constantness.  I
      guess _IS_ wins over _P
      
      	gcc/
      	* tree.h (DECL_IS_BUILTIN): Rename to ...
      	(DECL_IS_UNDECLARED_BUILTIN): ... here.  No need to use SOURCE_LOCUS.
      	* calls.c (maybe_warn_alloc_args_overflow): Adjust for rename.
      	* cfgexpand.c (pass_expand::execute): Likewise.
      	* dwarf2out.c (base_type_die, is_naming_typedef_decl): Likewise.
      	* godump.c (go_decl, go_type_decl): Likewise.
      	* print-tree.c (print_decl_identifier): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
      	* xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
      	gcc/c-family/
      	* c-ada-spec.c (collect_ada_nodes): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	(collect_ada_node): Likewise.
      	(dump_forward_type): Likewise.
      	* c-common.c (set_underlying_type): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	(user_facing_original_type, c_common_finalize_early_debug): Likewise.
      	gcc/c/
      	* c-decl.c (diagnose_mismatched_decls): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	(warn_if_shadowing, implicitly_declare, names_builtin_p)
      	(collect_source_refs): Likewise.
      	* c-typeck.c (inform_declaration, inform_for_arg)
      	(convert_for_assignment): Likewise.
      	gcc/cp/
      	* cp-tree.h (DECL_UNDECLARED_BUILTIN_P): Delete.
      	* cp-objcp-common.c (names_bultin_p): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	* decl.c (decls_match): Likewise.  Replace
      	DECL_UNDECLARED_BUILTIN_P with DECL_IS_UNDECLARED_BUILTIN.
      	(duplicate_decls): Likewise.
      	* decl2.c (collect_source_refs): Likewise.
      	* name-lookup.c (anticipated_builtin_p, print_binding_level)
      	(do_nonmember_using_decl): Likewise.
      	* pt.c (builtin_pack_fn_p): Likewise.
      	* typeck.c (error_args_num): Likewise.
      	gcc/lto/
      	* lto-symtab.c (lto_symtab_merge_decls_1): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	gcc/go/
      	* go-gcc.cc (Gcc_backend::call_expression): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	libcc1/
      	* libcc1plugin.cc (address_rewriter): Rename
      	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
      	* libcp1plugin.cc (supplement_binding): Likewise.
      ba649812
    • David Candler's avatar
      aarch64: Use intrinsics for upper saturating shift right · 05f1883c
      David Candler authored
      The use of vqshrn_high_n_s32 was triggering an unneeded register move, because
      sqshrn2 is destructive but was declared as inline assembly in arm_neon.h. This
      patch implements sqshrn2 and uqshrn2 as actual intrinsics which do not trigger
      the unnecessary move, along with new tests to cover them.
      
      gcc/ChangeLog
      
      2020-11-06  David Candler  <david.candler@arm.com>
      
      	* config/aarch64/aarch64-builtins.c
      	(TYPES_SHIFT2IMM): Add define.
      	(TYPES_SHIFT2IMM_UUSS): Add define.
      	(TYPES_USHIFT2IMM): Add define.
      	* config/aarch64/aarch64-simd.md
      	(aarch64_<sur>q<r>shr<u>n2_n<mode>): Add new insn for upper saturating shift right.
      	* config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
      	* config/aarch64/arm_neon.h:
      	(vqrshrn_high_n_s16): Expand using intrinsic rather than inline asm.
      	(vqrshrn_high_n_s32): Likewise.
      	(vqrshrn_high_n_s64): Likewise.
      	(vqrshrn_high_n_u16): Likewise.
      	(vqrshrn_high_n_u32): Likewise.
      	(vqrshrn_high_n_u64): Likewise.
      	(vqrshrun_high_n_s16): Likewise.
      	(vqrshrun_high_n_s32): Likewise.
      	(vqrshrun_high_n_s64): Likewise.
      	(vqshrn_high_n_s16): Likewise.
      	(vqshrn_high_n_s32): Likewise.
      	(vqshrn_high_n_s64): Likewise.
      	(vqshrn_high_n_u16): Likewise.
      	(vqshrn_high_n_u32): Likewise.
      	(vqshrn_high_n_u64): Likewise.
      	(vqshrun_high_n_s16): Likewise.
      	(vqshrun_high_n_s32): Likewise.
      	(vqshrun_high_n_s64): Likewise.
      
      gcc/testsuite/ChangeLog
      
      2020-11-06  David Candler  <david.candler@arm.com>
      
      	* gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c: New testcase.
      	* gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c: Likewise.
      	* gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c: Likewise.
      	* gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c: Likewise.
      	* gcc.target/aarch64/narrow_high-intrinsics.c: Update expected assembler
      	for sqshrun2, sqrshrun2, sqshrn2, uqshrn2, sqrshrn2 and uqrshrn2.
      05f1883c
    • Nathan Sidwell's avatar
      libcpp: Provide date routine · 4b5f564a
      Nathan Sidwell authored
      Joseph pointed me at cb_get_source_date_epoch, which allows repeatable
      builds and solves a FIXME I had on the modules branch.  Unfortunately
      it's used exclusively to generate __DATE__ and __TIME__ values, which
      fallback to using a time(2) call.  It'd be nicer if the preprocessor
      made whatever time value it determined available to the rest of the
      compiler.  So this patch adds a new cpp_get_date function, which
      abstracts the call to the get_source_date_epoch hook, or uses time
      directly.  The value is cached.  Thus the timestamp I end up putting
      on CMI files matches __DATE__ and __TIME__ expansions.  That seems
      worthwhile.
      
      	libcpp/
      	* include/cpplib.h (enum class CPP_time_kind): New.
      	(cpp_get_date): Declare.
      	* internal.h (struct cpp_reader): Replace source_date_epoch with
      	time_stamp and time_stamp_kind.
      	* init.c (cpp_create_reader): Initialize them.
      	* macro.c (_cpp_builtin_macro_text): Use cpp_get_date.
      	(cpp_get_date): Broken out from _cpp_builtin_macro_text and
      	genericized.
      4b5f564a
    • Richard Sandiford's avatar
      aarch64: Support permutes on unpacked SVE vectors · 6c3ce63b
      Richard Sandiford authored
      This patch adds support for permuting unpacked SVE vectors using:
      
      - DUP
      - EXT
      - REV[BHW]
      - REV
      - TRN[12]
      - UZP[12]
      - ZIP[12]
      
      This involves rewriting the REV[BHW] permute code so that the inputs
      and outputs of the insn pattern have the same mode as the vectors
      being permuted.  This is different from the ACLE form, where the
      reversal happens within individual elements rather than within
      groups of multiple elements.
      
      The patch does not add a conditional version of REV[BHW].  I'll come
      back to that once we have partial-vector comparisons and selects.
      
      The patch is really just enablement, adding an extra tool to the
      toolbox.  It doesn't bring any significant vectorisation opportunities
      on its own.  However, the patch does have one artificial example that
      is now vectorised in a better way than before.
      
      gcc/
      	* config/aarch64/aarch64-modes.def (VNx2BF, VNx4BF): Adjust nunits
      	and alignment based on the current VG.
      	* config/aarch64/iterators.md (SVE_ALL, SVE_24, SVE_2, SVE_4): Add
      	partial SVE BF modes.
      	(UNSPEC_REVBHW): New unspec.
      	(Vetype, Vesize, Vctype, VEL, Vel, vwcore, V_INT_CONTAINER)
      	(v_int_container, VPRED, vpred): Handle partial SVE BF modes.
      	(container_bits, Vcwtype): New mode attributes.
      	* config/aarch64/aarch64-sve.md
      	(@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): New pattern.
      	(@aarch64_sve_dup_lane<mode>): Extended from SVE_FULL to SVE_ALL.
      	(@aarch64_sve_rev<mode>, @aarch64_sve_<perm_insn><mode>): Likewise.
      	(@aarch64_sve_ext<mode>): Likewise.
      	* config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
      	E_VNx2BFmode and E_VNx4BFmode.
      	(aarch64_evpc_rev_local): Base the analysis on the container size
      	instead of the element size.  Use the new aarch64_sve_revbhw
      	patterns for SVE.
      	(aarch64_evpc_dup): Handle partial SVE data modes.  Use the
      	container size instead of the element size when applying the
      	SVE immediate limit.  Fix a previously incorrect bounds check.
      	(aarch64_expand_vec_perm_const_1): Handle partial SVE data modes.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/dup_lane_2.c: New test.
      	* gcc.target/aarch64/sve/dup_lane_3.c: Likewise.
      	* gcc.target/aarch64/sve/ext_4.c: Likewise.
      	* gcc.target/aarch64/sve/rev_2.c: Likewise.
      	* gcc.target/aarch64/sve/revhw_1.c: Likewise.
      	* gcc.target/aarch64/sve/revhw_2.c: Likewise.
      	* gcc.target/aarch64/sve/slp_perm_8.c: Likewise.
      	* gcc.target/aarch64/sve/trn1_2.c: Likewise.
      	* gcc.target/aarch64/sve/trn2_2.c: Likewise.
      	* gcc.target/aarch64/sve/uzp1_2.c: Likewise.
      	* gcc.target/aarch64/sve/uzp2_2.c: Likewise.
      	* gcc.target/aarch64/sve/zip1_2.c: Likewise.
      	* gcc.target/aarch64/sve/zip2_2.c: Likewise.
      6c3ce63b
    • Martin Liska's avatar
      Add -fbit-tests option. · 9b11203e
      Martin Liska authored
      gcc/ChangeLog:
      
      	* common.opt: Add new -fbit-tests option.
      	* doc/invoke.texi: Document the option.
      	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
      	Use the option.
      	* tree-switch-conversion.h (is_enabled): New function.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/tree-ssa/switch-4.c: New test.
      9b11203e
    • Richard Biener's avatar
      make PRE constant value IDs negative · d3989492
      Richard Biener authored
      This separates constant and non-constant value-ids to allow for
      a more efficient constant_value_id_p and for more efficient bit-packing
      inside the bitmap sets which never contain any constant values.
      
      There's further optimization opportunities but at this stage
      I'll do small refactorings.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.h (get_max_constant_value_id): Declare.
      	(get_next_constant_value_id): Likewise.
      	(value_id_constant_p): Inline and simplify.
      	* tree-ssa-sccvn.c (constant_value_ids): Remove.
      	(next_constant_value_id): Add.
      	(get_or_alloc_constant_value_id): Adjust.
      	(value_id_constant_p): Remove definition.
      	(get_max_constant_value_id): Define.
      	(get_next_value_id): Add assert for overflow.
      	(get_next_constant_value_id): Define.
      	(run_rpo_vn): Adjust.
      	(free_rpo_vn): Likewise.
      	(do_rpo_vn): Initialize next_constant_value_id.
      	* tree-ssa-pre.c (constant_value_expressions): New.
      	(add_to_value): Split into constant/non-constant value
      	handling.  Avoid exact re-allocation.
      	(vn_valnum_from_value_id): Adjust.
      	(phi_translate_1): Remove spurious exact re-allocation.
      	(bitmap_find_leader): Adjust.  Make sure we return
      	a CONSTANT value for a constant value id.
      	(do_pre_regular_insertion): Use 2 auto-elements for avail.
      	(do_pre_partial_partial_insertion): Likewise.
      	(init_pre): Allocate constant_value_expressions.
      	(fini_pre): Release constant_value_expressions.
      d3989492
    • Richard Biener's avatar
      tree-optimization/97706 - handle PHIs in pattern recog mask precison · 22175d0d
      Richard Biener authored
      This adds handling of PHIs to mask precision compute which is
      eventually needed to detect a bool pattern when the def chain
      contains such a PHI node.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97706
      	* tree-vect-patterns.c (possible_vector_mask_operation_p):
      	PHIs are possible mask operations.
      	(vect_determine_mask_precision): Handle PHIs.
      	(vect_determine_precisions): Walk PHIs in BB analysis.
      
      	* gcc.dg/vect/bb-slp-pr97706.c: New testcase.
      22175d0d
    • Nathan Sidwell's avatar
      c++: Parser tweaks · 1db815f4
      Nathan Sidwell authored
      We need to adjust the wording for 'export'.  Between c++11 and c++20
      it is deprecated.  Outside those ranges it is unsupported (at the
      moment).  While here, there's also an unneeded setting of a bool --
      it's inside an if block that just checked it was true.
      
      	gcc/cp/
      	* parser.c (cp_parser_template_declaration): Adjust 'export' warning.
      	(cp_parser_explicit_specialization): Remove unneeded bool setting.
      1db815f4
    • Kewen Lin's avatar
      testsuite: fix malloc alignment in test · 15bcd01a
      Kewen Lin authored
      gcc/testsuite/ChangeLog:
      
      	PR gcov-profile/97461
      	* gcc.dg/tree-prof/pr97461.c: Return aligned memory.
      15bcd01a
    • Thomas Schwinge's avatar
      [Fortran] Remove OpenACC 'loop' inside 'parallel' special-case code · 4c27f900
      Thomas Schwinge authored
      Instead, use the generic middle-end code, like already used for Fortran OpenACC
      'loop' inside other compute constructs, orphaned 'loop' constructs, and C, C++
      generally.
      
      	gcc/fortran/
      	* openmp.c (oacc_is_parallel, resolve_oacc_params_in_parallel):
      	Remove.
      	(resolve_oacc_loop_blocks): Don't call the former.
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-2-parallel-3.f95: Adjust.
      4c27f900
    • Thomas Schwinge's avatar
      Remove 'gfortran.dg/goacc/loop-6.f95' · 52b74462
      Thomas Schwinge authored
      What it's testing is adequately covered in other
      'gfortran.dg/goacc/loop-2-parallel-*.f95' testcases.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-6.f95: Remove.
      52b74462
    • Thomas Schwinge's avatar
      Remove 'gfortran.dg/goacc/loop-5.f95' · 4dfa1789
      Thomas Schwinge authored
      What it's testing is adequately covered in other
      'gfortran.dg/goacc/loop-2-*-tile.f95' testcases.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-5.f95: Remove.
      4dfa1789
    • Martin Liska's avatar
      gcc-changelog: prevent double cherry-pick line · f176773b
      Martin Liska authored
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py: Add new check.
      	* gcc-changelog/test_email.py: Test it.
      	* gcc-changelog/test_patches.txt: Add new patch.
      f176773b
    • Richard Biener's avatar
      refactor SLP analysis · b88fdcc1
      Richard Biener authored
      This passes down the graph entry kind down to vect_analyze_slp_instance
      which simplifies it and makes it a shallow wrapper around
      vect_build_slp_instance.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-slp.c (vect_analyze_slp): Pass down the
      	SLP graph entry kind.
      	(vect_analyze_slp_instance): Simplify.
      	(vect_build_slp_instance): Adjust.
      	(vect_slp_check_for_constructors): Perform more
      	eligibility checks here.
      b88fdcc1
    • Jan Hubicka's avatar
      Move ipa-refs from ggc to heap. · 7144270e
      Jan Hubicka authored
      gcc/ChangeLog:
      
      	* ipa-ref.h (enum ipa_ref_use): Remove GTY marker.
      	(struct ipa_ref): Remove GTY marker; reorder for better packing.
      	(struct ipa_ref_list): Remove GTY marker; turn references
      	nad referring to va_heap, vl_ptr vectors; update accesors.
      	* cgraph.h (symtab_node::iterate_reference): Update.
      	* ipa-ref.c (ipa_ref::remove_reference): Update.
      	* symtab.c (symtab_node::create_reference): Update.
      	(symtab_node::remove_all_references): Update.
      	(symtab_node::resolve_alias): Update.
      
      gcc/cp/ChangeLog:
      
      	* tree.c (cp_fix_function_decl_p): Do not access ipa_ref_list dirrectly.
      7144270e
    • Jakub Jelinek's avatar
      ipa-modref: Fix comment typos · 8a2fd716
      Jakub Jelinek authored
      2020-11-06  Jakub Jelinek  <jakub@redhat.com>
      
      	* ipa-modref-tree.h: Fix comment typos.
      	* ipa-modref.c: Likewise.
      8a2fd716
    • Andreas Krebbel's avatar
      IBM Z: Remove override of inline params · b92e4be3
      Andreas Krebbel authored
      We have pretty aggressive values for inline-min-speedup and
      max-inline-insns-auto. This unfortunately made more maybe
      uninitialized warnings to appear when building on Z.
      
      With the patch we go back to the default values.
      
      gcc/ChangeLog:
      
      	* config/s390/s390.c (s390_option_override_internal): Remove
      	override of inline params.
      b92e4be3
    • Richard Biener's avatar
      tree-optimization/97706 - part one, refactor vect_determine_mask_precision · 7307d8e1
      Richard Biener authored
      This computes vect_determine_mask_precision in a RPO forward walk
      rather than in a backward walk and using a worklist.  It will make
      fixing PR97706 easier but for bisecting I wanted it to be separate.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97706
      	* tree-vect-patterns.c (vect_determine_mask_precision):
      	Remove worklist operation.
      	(vect_determine_stmt_precisions): Do not call
      	vect_determine_mask_precision here.
      	(vect_determine_precisions): Compute mask precision
      	in a forward walk.
      7307d8e1
    • Tobias Burnus's avatar
      OpenACC/Fortran: Reject '!$acc atomic update capture' · c2e9f586
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* openmp.c (gfc_match_oacc_atomic): No longer accept 'update capture'.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/goacc-gomp/goacc-gomp.exp: New.
      	* gfortran.dg/goacc-gomp/atomic.f90: New test.
      	* gfortran.dg/goacc/atomic.f90: New test.
      c2e9f586
    • Tobias Burnus's avatar
      OpenACC (C/C++): Fix 'acc atomic' parsing · a2c11935
      Tobias Burnus authored
      gcc/c/ChangeLog:
      
      	* c-parser.c (c_parser_omp_atomic): Add openacc parameter and update
      	OpenACC matching.
      	(c_parser_omp_construct): Update call.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_omp_atomic): Add openacc parameter and update
      	OpenACC matching.
      	(cp_parser_omp_construct): Update call.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/goacc-gomp/atomic.c: New test.
      	* c-c++-common/goacc/atomic.c: New test.
      a2c11935
    • Richard Biener's avatar
      tree-optimization/97732 - fix init of SLP induction vectorization · 8ebedfcd
      Richard Biener authored
      This PR exposes two issues - one that the vector builder treats
      &x as eligible for VECTOR_CST elements and one that SLP induction
      vectorization forgets to convert init elements to the vector
      component type which makes a difference for pointer vs. integer.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97732
      	* tree-vect-loop.c (vectorizable_induction): Convert the
      	init elements to the vector component type.
      	* gimple-fold.c (gimple_build_vector): Use CONSTANT_CLASS_P
      	rather than TREE_CONSTANT to determine if elements are
      	eligible for VECTOR_CSTs.
      
      	* gcc.dg/vect/bb-slp-pr97732.c: New testcase.
      8ebedfcd
    • Olivier Hainque's avatar
      Add dg-require-profiling directives to gcc.target/i386 tests · f11b1f9d
      Olivier Hainque authored
      This patch adds /* { dg-require-profiling "-pg" } */
      to a few tests in gcc.target/i386 that use -pg explicitly, to
      prevent them from failing during runs for VxWorks targets.
      
      2020-10-29  Olivier Hainque  <hainque@adacore.com>
      
      gcc/testsuite/
      	* gcc.target/i386/fentryname1.c: Add dg-require-profiling.
      	* gcc.target/i386/fentryname2.c: Likewise.
      	* gcc.target/i386/fentryname3.c: Likewise.
      	* gcc.target/i386/returninst1.c: Likewise.
      	* gcc.target/i386/returninst2.c: Likewise.
      	* gcc.target/i386/returninst3.c: Likewise.
      f11b1f9d
    • Olivier Hainque's avatar
      Add dg-require-effective-target fpic to g++ tests · ff47c61f
      Olivier Hainque authored
      Add missing dg-require-effective-target fpic to few
      g++.dg tests.
      
      2020-11-02  Olivier Hainque  <hainque@adacore.com>
      
      gcc/testsuite/
      	* g++.dg/pr57878.C: Add dg-require-effective-target fpic.
      	* g++.dg/pr65032.C: Likewise.
      	* g++.dg/pr84279.C: Likewise.
      	* g++.dg/inherit/thunk8.C: Likewise.
      	* g++.dg/opt/pr64411.C: Likewise.
      ff47c61f
    • Jan Hubicka's avatar
      Add fnspec handling to ipa mode of ipa-modef. · 6cef01c3
      Jan Hubicka authored
      gcc/:
      
      	* attr-fnspec.h (attr_fnspec::get_str): New accessor
      	* ipa-fnsummary.c (read_ipa_call_summary): Store also parm info
      	for builtins.
      	* ipa-modref.c (class fnspec_summary): New type.
      	(class fnspec_summaries_t): New type.
      	(modref_summary::modref_summary): Initialize writes_errno.
      	(struct modref_summary_lto): Add writes_errno.
      	(modref_summary_lto::modref_summary_lto): Initialize writes_errno.
      	(modref_summary::dump): Check for NULL pointers.
      	(modref_summary_lto::dump): Dump writes_errno.
      	(collapse_loads): Move up in source file.
      	(collapse_stores): New function.
      	(process_fnspec): Handle also internal calls.
      	(analyze_call): Likewise.
      	(analyze_stmt): Store fnspec string if needed.
      	(analyze_function): Initialize fnspec_sumarries.
      	(modref_summaries_lto::duplicate): Copy writes_errno.
      	(modref_write): Store writes_errno and fnspec summaries.
      	(read_section): Read writes_errno and fnspec summaries.
      	(modref_read): Initialize fnspec summaries.
      	(update_signature): Fix formating.
      	(compute_parm_map): Return true if sucessful.
      	(get_parm_type): New function.
      	(get_access_for_fnspec): New function.
      	(propagate_unknown_call): New function.
      	(modref_propagate_in_scc): Use it.
      	(pass_ipa_modref::execute): Delete fnspec_summaries.
      	(ipa_modref_c_finalize): Delete fnspec_summaries.
      	* ipa-prop.c: Include attr-fnspec.h.
      	(ipa_compute_jump_functions_for_bb):  Also compute jump functions
      	for functions with fnspecs.
      	(ipa_read_edge_info): Read jump functions for builtins.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/ipa/modref-2.c: New test.
      	* gcc.dg/lto/modref-2_0.c: New test.
      6cef01c3
    • Jan Hubicka's avatar
      Move size time tables from GGC to heap · 366099ff
      Jan Hubicka authored
      this patch moves size time tables out of ggc allocated memory.  This makes
      sources bit cleaner and saves about 60MB of GGC memory that turns to about 45MB
      of heap memory for cc1plus LTO build.
      
      	* ipa-fnsummary.h (class size_time_entry): Do not GTY annotate.
      	(class ipa_fnsummary): Turn size_time_table to auto_vec and
      	call_size_time_table to effecient vec; update constructors.
      	* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Update.
      	(ipa_fn_summary::~ipa_fn_summary): Update.
      	(ipa_fn_summary_t::duplicate): Update.
      	(ipa_dump_fn_summary): Update.
      	(set_switch_stmt_execution_predicate): Update.
      	(analyze_function_body): Update.
      	(estimate_calls_size_and_time): Update.
      	(ipa_call_context::estimate_size_and_time): Update.
      	(ipa_merge_fn_summary_after_inlining): Update.
      	(ipa_update_overall_fn_summary): Update.
      	(inline_read_section): Update.
      	(ipa_fn_summary_write): Update.
      366099ff
    • Jakub Jelinek's avatar
      c-common: Remove DEBUG_FUNCTION from verify_sequence_points · 344106a9
      Jakub Jelinek authored
      While perhaps the function name might suggest that it is a verification/debugging
      only routine, it is actually implementation of the -Wsequence-point warning
      and so doesn't need the DEBUG_FUNCTION macro on it.
      
      2020-11-06  Jakub Jelinek  <jakub@redhat.com>
      
      	* c-common.c (verify_sequence_points): Remove DEBUG_FUNCTION.
      344106a9
    • Richard Biener's avatar
      tree-optimization/97733 - fix SLP of reductions with zero relevant · 2210bf6d
      Richard Biener authored
      This adds a missing check.
      
      2020-11-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/97733
      	* tree-vect-slp.c (vect_analyze_slp_instance): If less
      	than two reductions were relevant or live do nothing.
      2210bf6d
    • Tobias Burnus's avatar
      Fortran: Fix type-decl for PDT / wrong-code pdt_14.f03 issue [PR97652] · c283a711
      Tobias Burnus authored
      Parameterized derived types are handled in a special way and start with 'Pdt'.
      If the 'P' is not uppercase, gfc_get_derived_type (which calls
      gfc_get_module_backend_decl) does not find the existing declaration and
      builds a new type. The middle end then sees those types as being different
      and nonalising, creating an endless loop for pdt_14.f03.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/97652
      	* module.c (mio_symbol): Fix symbol name for pdt_type.
      c283a711
    • Jeff Law's avatar
      Improve overflow check · 32ee4728
      Jeff Law authored
      Convert
      x < (short) ((unsigned short)x + const)
      to
      x <= SHORT_MAX – const
      (and similarly for other integral types) if const is not 0.
      
      gcc/
      	PR tree-optimization/97223
      	* match.pd (overflow detection and optimization): Handle conversions.
      
      gcc/testsuite/
      
      	* gcc.dg/no-strict-overflow-4.c: Adjust expected output.
      32ee4728
    • Eugene Rozenfeld's avatar
      Simplify x >> x to 0. This fixes PR96701. · 6483f059
      Eugene Rozenfeld authored
      gcc/
      	* match.pd (x >> x): New pattern.
      
      gcc/testsuite
      
      	* gcc.dg/self-right-shift.c: New test.
      6483f059
    • Kito Cheng's avatar
      RISC-V: Mark non-export symbol static and const in riscv-common.c · 56ecdc2f
      Kito Cheng authored
      gcc/ChangeLog:
      
      	* common/config/riscv/riscv-common.c (riscv_implied_info):
      	Add static and const.
      	(riscv_subset_list::handle_implied_ext): Add const due to
      	riscv_implied_info changed to const.
      56ecdc2f
    • Kito Cheng's avatar
      PR target/96307: Fix KASAN option checking. · 65e82636
      Kito Cheng authored
       - Disable kasan if target is unsupported and -fasan-shadow-offset= is not
         given, no matter `--param asan-stack=1` is given or not.
      
       - Moving KASAN option checking testcase to gcc.dg, those testcase could be
         useful for all other target which not support asan.
      
       - Verifed on riscv and x86.
      
      gcc/ChangeLog:
      
      	PR target/96307
      	* toplev.c (process_options): Remove param_asan_stack checking for kasan
      	option checking.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/96307
      	* gcc.dg/pr96307.c: New.
      	* gcc.target/riscv/pr96260.c: Move this test case from here to ...
      	* gcc.dg/pr96260.c: ... here.
      	* gcc.target/riscv/pr91441.c: Move this test case from here to ...
      	* gcc.dg/pr91441.c: ... here.
      	* lib/target-supports.exp (check_effective_target_no_fsanitize_address):
      	New proc.
      65e82636
    • liuhongt's avatar
      MAINTAINERS: Add myself for write after approval. · f72af3af
      liuhongt authored
      ChangeLog:
      
      2019-03-17  Hongtao Liu  <hongtao.liu@intel.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      f72af3af
    • GCC Administrator's avatar
      Daily bump. · 0cfd9109
      GCC Administrator authored
      0cfd9109
Loading