Skip to content
Snippets Groups Projects
  1. Nov 22, 2020
    • Iain Buclaw's avatar
      d: Fix OutOfMemoryError thrown when appending to an array with a side effect · 23045f8b
      Iain Buclaw authored
      When appending a character to an array, the result of that concat
      assignment was not the new value of the array, similarly, when appending
      an array to another array, side effects were evaluated in reverse to the
      expected order of evaluation.
      
      As of this change, the address of the left-hand side expression is
      saved and re-used as the result.  Its evaluation is now also forced to
      occur before the concat operation itself is called.
      
      gcc/d/ChangeLog:
      
      	PR d/97889
      	* expr.cc (ExprVisitor::visit (CatAssignExp *)): Enforce LTR order of
      	evaluation on left and right hand side expressions.
      
      gcc/testsuite/ChangeLog:
      
      	PR d/97889
      	* gdc.dg/torture/pr97889.d: New test.
      23045f8b
    • Jakub Jelinek's avatar
      widening_mul: pattern recognize further forms of __builtin_add_overflow [PR95853] · c1fb592f
      Jakub Jelinek authored
      The following patch recognizes some further forms of additions with overflow
      checks as shown in the testcase, in particular where the unsigned addition is
      performed in a wider mode just to catch overflow with a > narrower_utype_max
      check.
      
      2020-11-22  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/95853
      	* tree-ssa-math-opts.c (uaddsub_overflow_check_p): Add maxval
      	argument, if non-NULL, instead look for r > maxval or r <= maxval
      	comparisons.
      	(match_uaddsub_overflow): Pattern recognize even other forms of
      	__builtin_add_overflow, in particular when addition is performed
      	in a wider type and result compared to maximum of the narrower
      	type.
      
      	* gcc.dg/pr95853.c: New test.
      c1fb592f
    • Jeff Law's avatar
      Partially revert recent H8 patch for conditional branches · fdd2fb17
      Jeff Law authored
      So I'd forgotten an important tidbit on the H8 port.  Specifically
      for a branch instruction, the target label must be operand 0 for
      the length computations.
      
      This really only affects the main conditional branch pattern.
      The other conditional branch patterns are split and ultimately
      funnel into the main pattern.  This patch fixes the issue by
      partially reverting an earlier change.  This issue didn't show up
      until late in the optimization work on cc0 removal of the H8 port,
      but was caught by the testsuite.  So there's no new test.
      
      Built and regression tested H8 with this change, with and without
      the cc0 removal patches.
      
      gcc/
      
      	* config/h8300/jumpcall.md (branch_true, branch_false): Revert
      	recent change.  Ensure operand[0] is always the target label.
      fdd2fb17
    • Iain Sandoe's avatar
      Darwin : Avoid a C++ ODR violation seen with LTO. · 3c52cd51
      Iain Sandoe authored
      We have a similar code pattern in darwin-c.c to one in c-pragmas
      (most likely a cut & paste) with a struct type used locally to the
      TU.  With C++ we need to rename the type to avoid an ODR violation.
      
      gcc/ChangeLog:
      
      	* config/darwin-c.c (struct f_align_stack): Rename
      	to type from align_stack to f_align_stack.
      	(push_field_alignment): Likewise.
      	(pop_field_alignment): Likewise.
      3c52cd51
    • GCC Administrator's avatar
      Daily bump. · 7a97e2fc
      GCC Administrator authored
      7a97e2fc
  2. Nov 21, 2020
    • Marek Polacek's avatar
      c++: Extend -Wrange-loop-construct for binding-to-temp [PR94695] · c51e31a0
      Marek Polacek authored
      This patch finishes the second half of -Wrange-loop-construct I promised
      to implement: it warns when a loop variable in a range-based for-loop is
      initialized with a value of a different type resulting in a copy.  For
      instance:
      
        int arr[10];
        for (const double &x : arr) { ... }
      
      where in every iteration we have to create and destroy a temporary value
      of type double, to which we bind the reference.  This could negatively
      impact performance.
      
      As per Clang, this doesn't warn when the range returns a copy, hence the
      glvalue_p check.
      
      gcc/ChangeLog:
      
      	PR c++/94695
      	* doc/invoke.texi: Update the -Wrange-loop-construct description.
      
      gcc/cp/ChangeLog:
      
      	PR c++/94695
      	* parser.c (warn_for_range_copy): Warn when the loop variable is
      	initialized with a value of a different type resulting in a copy.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/94695
      	* g++.dg/warn/Wrange-loop-construct2.C: New test.
      c51e31a0
    • Marek Polacek's avatar
      c++: Reject identifier label in constexpr [PR97846] · 6f20c42c
      Marek Polacek authored
      [dcl.constexpr]/3 says that the function-body of a constexpr function
      shall not contain an identifier label, but we aren't enforcing that.
      
      This patch implements that.  Of course, we can't reject artificial
      labels.
      
      gcc/cp/ChangeLog:
      
      	PR c++/97846
      	* constexpr.c (potential_constant_expression_1): Reject
      	LABEL_EXPRs that use non-artifical LABEL_DECLs.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97846
      	* g++.dg/cpp1y/constexpr-label.C: New test.
      6f20c42c
    • Marek Polacek's avatar
      c++: Fix ICE-on-invalid with -Wvexing-parse [PR97881] · 0999f260
      Marek Polacek authored
      This invalid (?) code broke my assumption that if decl_specifiers->type
      is null, there must be any type-specifiers.  Turn the assert into an if
      to fix this crash.
      
      gcc/cp/ChangeLog:
      
      	PR c++/97881
      	* parser.c (warn_about_ambiguous_parse): Only assume "int" if we
      	actually saw any type-specifiers.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97881
      	* g++.dg/warn/Wvexing-parse9.C: New test.
      0999f260
    • David Edelsohn's avatar
      testsuite: localclass2 require LTO · 1cb50c0a
      David Edelsohn authored
      The testcase uses LTO but does not include the dg-require LTO.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/debug/localclass2.C: Require LTO.
      1cb50c0a
    • Marek Polacek's avatar
      c++: Allow template lambdas without lambda-declarator [PR97839] · 78cd6a63
      Marek Polacek authored
      Our implementation of template lambdas incorrectly requires the optional
      lambda-declarator.  This was probably required by an early draft of
      generic lambdas, but now the production is [expr.prim.lambda.general]:
      
       lambda-expression:
          lambda-introducer lambda-declarator [opt] compound-statement
          lambda-introducer < template-parameter-list > requires-clause [opt]
      	  lambda-declarator [opt] compound-statement
      
      Therefore, we should accept the following test.
      
      gcc/cp/ChangeLog:
      
      	PR c++/97839
      	* parser.c (cp_parser_lambda_declarator_opt): Don't require ().
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97839
      	* g++.dg/cpp2a/lambda-generic8.C: New test.
      78cd6a63
    • Jan Hubicka's avatar
      Use OEP_MATCH_SIDE_EFFECTS in compare_ao_refs · ddaad23e
      Jan Hubicka authored
      	* tree-ssa-alias.c (ao_compare::compare_ao_refs,
      	ao_compare::hash_ao_ref): Use OEP_MATCH_SIDE_EFFECTS.
      ddaad23e
    • Marek Polacek's avatar
      c++: Fix wrong error with constexpr destructor [PR97427] · caf17f3a
      Marek Polacek authored
      When I implemented the code to detect modifying const objects in
      constexpr contexts, we couldn't have constexpr destructors, so I didn't
      consider them.  But now we can and that caused a bogus error in this
      testcase: [class.dtor]p5 says that "const and volatile semantics are not
      applied on an object under destruction.  They stop being in effect when
      the destructor for the most derived object starts." so we have to clear
      the TREE_READONLY flag we set on the object after the constructors have
      been called to mark it as no-longer-under-construction.  In the ~Foo
      call it's now an object under destruction, so don't report those errors.
      
      gcc/cp/ChangeLog:
      
      	PR c++/97427
      	* constexpr.c (cxx_set_object_constness): New function.
      	(cxx_eval_call_expression): Set new_obj for destructors too.
      	Call cxx_set_object_constness to set/unset TREE_READONLY of
      	the object under construction/destruction.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97427
      	* g++.dg/cpp2a/constexpr-dtor10.C: New test.
      caf17f3a
    • Jonathan Wakely's avatar
      libstdc++: Fix atomic waiting for non-linux targets · 62d19588
      Jonathan Wakely authored
      This fixes some UNRESOLVED tests on (at least) Solaris and Darwin, and
      disables some tests that hang forever on Solaris. A proper fix is still
      needed.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/atomic_base.h (atomic_flag::wait): Use correct
      	type for __atomic_wait call.
      	* include/bits/atomic_timed_wait.h (__atomic_wait_until): Check
      	_GLIBCXX_HAVE_LINUX_FUTEX.
      	* include/bits/atomic_wait.h (__atomic_notify): Likewise.
      	* include/bits/semaphore_base.h (_GLIBCXX_HAVE_POSIX_SEMAPHORE):
      	Only define if SEM_VALUE_MAX or _POSIX_SEM_VALUE_MAX is defined.
      	* testsuite/29_atomics/atomic/wait_notify/bool.cc: Disable on
      	non-linux targes.
      	* testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
      	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
      	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
      	* testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
      62d19588
    • Jan Hubicka's avatar
      Update vec-35.c and vect-35-big-array.c · d4a20f90
      Jan Hubicka authored
      We now determine depnedencies across union fields correctly.
      
      	* gcc.dg/vect/vect-35-big-array.c: Excpect 2 loops to be vectorized.
      	* gcc.dg/vect/vect-35.c: Excpect 2 loops to be vectorized.
      d4a20f90
    • Jan Hubicka's avatar
      Improve hasing of anonymous namespace types · 8ee8afa3
      Jan Hubicka authored
      	* ipa-icf.c (sem_function::equals_wpa): Do not compare ODR type with
      	-fno-devirtualize.
      	(sem_item_optimizer::update_hash_by_addr_refs): Hash anonymous ODR
      	types by TYPE_UID of their main variant.
      8ee8afa3
    • Aaron Sawdey's avatar
      Re-enable vector pair memcpy/memmove expansion · c84add5c
      Aaron Sawdey authored
      After the MMA opaque mode patch goes in, we can re-enable
      use of vector pair in the inline expansion of memcpy/memmove.
      
      gcc/
      	* config/rs6000/rs6000.c (rs6000_option_override_internal):
      	Enable vector pair memcpy/memmove expansion.
      c84add5c
    • Aaron Sawdey's avatar
      Make MMA builtins use opaque modes · f8f8909a
      Aaron Sawdey authored
      This patch changes powerpc MMA builtins to use the new opaque
      mode class and use modes OO (32 bytes) and XO (64 bytes)
      instead of POI/PXI. Using the opaque modes prevents
      optimization from trying to do anything with vector
      pair/quad, which was the problem we were seeing with the
      partial integer modes.
      
      gcc/
      	* config/rs6000/mma.md (unspec): Add assemble/extract UNSPECs.
      	(movoi): Change to movoo.
      	(*movpoi): Change to *movoo.
      	(movxi): Change to movxo.
      	(*movpxi): Change to *movxo.
      	(mma_assemble_pair): Change to OO mode.
      	(*mma_assemble_pair): New define_insn_and_split.
      	(mma_disassemble_pair): New define_expand.
      	(*mma_disassemble_pair): New define_insn_and_split.
      	(mma_assemble_acc): Change to XO mode.
      	(*mma_assemble_acc): Change to XO mode.
      	(mma_disassemble_acc): New define_expand.
      	(*mma_disassemble_acc): New define_insn_and_split.
      	(mma_<acc>): Change to XO mode.
      	(mma_<vv>): Change to XO mode.
      	(mma_<avv>): Change to XO mode.
      	(mma_<pv>): Change to OO mode.
      	(mma_<apv>): Change to XO/OO mode.
      	(mma_<vvi4i4i8>): Change to XO mode.
      	(mma_<avvi4i4i8>): Change to XO mode.
      	(mma_<vvi4i4i2>): Change to XO mode.
      	(mma_<avvi4i4i2>): Change to XO mode.
      	(mma_<vvi4i4>): Change to XO mode.
      	(mma_<avvi4i4>): Change to XO mode.
      	(mma_<pvi4i2>): Change to XO/OO mode.
      	(mma_<apvi4i2>): Change to XO/OO mode.
      	(mma_<vvi4i4i4>): Change to XO mode.
      	(mma_<avvi4i4i4>): Change to XO mode.
      	* config/rs6000/predicates.md (input_operand): Allow opaque.
      	(mma_disassemble_output_operand): New predicate.
      	* config/rs6000/rs6000-builtin.def:
      	Changes to disassemble builtins.
      	* config/rs6000/rs6000-call.c (rs6000_return_in_memory):
      	Disallow __vector_pair/__vector_quad as return types.
      	(rs6000_promote_function_mode): Remove function return type
      	check because we can't test it here any more.
      	(rs6000_function_arg): Do not allow __vector_pair/__vector_quad
      	as as function arguments.
      	(rs6000_gimple_fold_mma_builtin):
      	Handle mma_disassemble_* builtins.
      	(rs6000_init_builtins): Create types for XO/OO modes.
      	* config/rs6000/rs6000-modes.def: DElete OI, XI,
      	POI, and PXI modes, and create XO and OO modes.
      	* config/rs6000/rs6000-string.c (expand_block_move):
      	Update to OO mode.
      	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_uncached):
      	Update for XO/OO modes.
      	(rs6000_rtx_costs): Make UNSPEC_MMA_XXSETACCZ cost 0.
      	(rs6000_modes_tieable_p): Update for XO/OO modes.
      	(rs6000_debug_reg_global): Update for XO/OO modes.
      	(rs6000_setup_reg_addr_masks): Update for XO/OO modes.
      	(rs6000_init_hard_regno_mode_ok): Update for XO/OO modes.
      	(reg_offset_addressing_ok_p): Update for XO/OO modes.
      	(rs6000_emit_move): Update for XO/OO modes.
      	(rs6000_preferred_reload_class): Update for XO/OO modes.
      	(rs6000_split_multireg_move): Update for XO/OO modes.
      	(rs6000_mangle_type): Update for opaque types.
      	(rs6000_invalid_conversion): Update for XO/OO modes.
      	* config/rs6000/rs6000.h (VECTOR_ALIGNMENT_P):
      	Update for XO/OO modes.
      	* config/rs6000/rs6000.md (RELOAD): Update for XO/OO modes.
      gcc/testsuite/
      	* gcc.target/powerpc/mma-double-test.c (main): Call abort for failure.
      	* gcc.target/powerpc/mma-single-test.c (main): Call abort for failure.
      	* gcc.target/powerpc/pr96506.c: Rename to pr96506-1.c.
      	* gcc.target/powerpc/pr96506-2.c: New test.
      f8f8909a
    • Aaron Sawdey's avatar
      Additional small changes to support opaque modes · 1e2d8575
      Aaron Sawdey authored
      After building some larger codes using opaque types and some c++ codes
      using opaque types it became clear I needed to go through and look for
      places where opaque types and modes needed to be handled. A whole pile
      of one-liners.
      
      gcc/
      	* typeclass.h: Add opaque_type_class.
      	* builtins.c (type_to_class): Identify opaque type class.
      	* dwarf2out.c (is_base_type): Handle opaque types.
      	(gen_type_die_with_usage): Handle opaque types.
      	* expr.c (count_type_elements): Opaque types should
      	never have initializers.
      	* ipa-devirt.c (odr_types_equivalent_p): No type-specific handling
      	for opaque types is needed as it eventually checks the underlying
      	mode which is what is important.
      	* tree-streamer.c (record_common_node): Handle opaque types.
      	* tree.c (type_contains_placeholder_1): Handle opaque types.
      	(type_cache_hasher::equal): No additional comparison needed for
      	opaque types.
      gcc/c-family
      	* c-pretty-print.c (c_pretty_printer::simple_type_specifier):
      	Treat opaque types like other types.
      	(c_pretty_printer::direct_abstract_declarator): Opaque types are
      	supported types.
      gcc/c
      	* c-aux-info.c (gen_type): Support opaque types.
      gcc/cp
      	* error.c (dump_type): Handle opaque types.
      	(dump_type_prefix): Handle opaque types.
      	(dump_type_suffix): Handle opaque types.
      	(dump_expr): Handle opaque types.
      	* pt.c (tsubst): Allow opaque types in templates.
      	(unify): Allow opaque types in templates.
      	* typeck.c (structural_comptypes): Handle comparison
      	of opaque types.
      1e2d8575
    • Iain Sandoe's avatar
      Darwin, libgfortran : Do not use environ directly from the library. · a3454130
      Iain Sandoe authored
      On macOS / Darwin, the environ variable can be used directly in the
      code of an executable, but cannot be used in the code of a shared
      library (i.e. libgfortran.dylib), in this case.
      
      In such cases, the  function _NSGetEnviron should be called to get
      the address of 'environ'.
      
      libgfortran/ChangeLog:
      
      	* intrinsics/execute_command_line.c (environ): Use
      	_NSGetEnviron to get the environment pointer on Darwin.
      a3454130
    • Iain Sandoe's avatar
      Darwin, libsanitizer : Support libsanitizer for x86_64-darwin20. · 93f1186f
      Iain Sandoe authored
      The sanitizer is supported for at least x86_64 and Darwin20.
      
      libsanitizer/ChangeLog:
      
      	* configure.tgt: Allow x86_64 Darwin2x.
      93f1186f
    • Ian Lance Taylor's avatar
    • GCC Administrator's avatar
      Daily bump. · 82e5048e
      GCC Administrator authored
      82e5048e
  3. Nov 20, 2020
    • Michael Meissner's avatar
      Include math.h in nextafter-2.c test. · 81a3f3d1
      Michael Meissner authored
      Since the test is compiled with -fno-builtin, include math.h to allow for
      implementations (like the PowerPC) that have multiple versions of long double
      that are selectable by switch.  Math.h could possibly switch what function
      nextafterl points to.
      
      gcc/testsuite/
      2020-11-17  Michael Meissner  <meissner@linux.ibm.com>
      
      	* gcc.dg/nextafter-2.c: Include math.h.
      81a3f3d1
    • Michael Meissner's avatar
      Power10: Add missing IEEE 128-bit XSCMP* built-in mappings. · 9bdb34ce
      Michael Meissner authored
      This patch adds support for mapping the scalar_cmp_exp_qp_* built-in functions
      to handle arguments that are either TFmode or KFmode, depending on whether long
      double uses the IEEE 128-bit representation (TFmode) or the IBM 128-bit
      representation (KFmode).  This shows up in the float128-cmp2-runnable.c test
      when long double uses the IEEE 128-bit representation.
      
      gcc/
      2020-11-20  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/rs6000-call.c (rs6000_expand_builtin): Add missing
      	XSCMP* cases for IEEE 128-bit long double.
      9bdb34ce
    • Thomas Rodgers's avatar
      libstdc++: Add C++2a synchronization support · 83a1beee
      Thomas Rodgers authored
      Add support for -
        * atomic_flag::wait/notify_one/notify_all
        * atomic::wait/notify_one/notify_all
        * counting_semaphore
        * binary_semaphore
        * latch
      
      libstdc++-v3/ChangeLog:
      
      	* include/Makefile.am (bits_headers): Add new header.
      	* include/Makefile.in: Regenerate.
      	* include/bits/atomic_base.h (__atomic_flag::wait): Define.
      	(__atomic_flag::notify_one): Likewise.
      	(__atomic_flag::notify_all): Likewise.
      	(__atomic_base<_Itp>::wait): Likewise.
      	(__atomic_base<_Itp>::notify_one): Likewise.
      	(__atomic_base<_Itp>::notify_all): Likewise.
      	(__atomic_base<_Ptp*>::wait): Likewise.
      	(__atomic_base<_Ptp*>::notify_one): Likewise.
      	(__atomic_base<_Ptp*>::notify_all): Likewise.
      	(__atomic_impl::wait): Likewise.
      	(__atomic_impl::notify_one): Likewise.
      	(__atomic_impl::notify_all): Likewise.
      	(__atomic_float<_Fp>::wait): Likewise.
      	(__atomic_float<_Fp>::notify_one): Likewise.
      	(__atomic_float<_Fp>::notify_all): Likewise.
      	(__atomic_ref<_Tp>::wait): Likewise.
      	(__atomic_ref<_Tp>::notify_one): Likewise.
      	(__atomic_ref<_Tp>::notify_all): Likewise.
      	(atomic_wait<_Tp>): Likewise.
      	(atomic_wait_explicit<_Tp>): Likewise.
      	(atomic_notify_one<_Tp>): Likewise.
      	(atomic_notify_all<_Tp>): Likewise.
      	* include/bits/atomic_wait.h: New file.
      	* include/bits/atomic_timed_wait.h: New file.
      	* include/bits/semaphore_base.h: New file.
      	* include/std/atomic (atomic<bool>::wait): Define.
      	(atomic<bool>::wait_one): Likewise.
      	(atomic<bool>::wait_all): Likewise.
      	(atomic<_Tp>::wait): Likewise.
      	(atomic<_Tp>::wait_one): Likewise.
      	(atomic<_Tp>::wait_all): Likewise.
      	(atomic<_Tp*>::wait): Likewise.
      	(atomic<_Tp*>::wait_one): Likewise.
      	(atomic<_Tp*>::wait_all): Likewise.
      	* include/std/latch: New file.
      	* include/std/semaphore: New file.
      	* include/std/version: Add __cpp_lib_semaphore and
      	__cpp_lib_latch defines.
      	* testsuite/29_atomics/atomic/wait_notify/bool.cc: New test.
      	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
      	* testsuite/29_atomics/atomic/wait_notify/generic.cc: Liekwise.
      	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
      	* testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
      	* testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
      	* testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
      	* testsuite/30_threads/semaphore/1.cc: New test.
      	* testsuite/30_threads/semaphore/2.cc: Likewise.
      	* testsuite/30_threads/semaphore/least_max_value_neg.cc: Likewise.
      	* testsuite/30_threads/semaphore/try_acquire.cc: Likewise.
      	* testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise.
      	* testsuite/30_threads/semaphore/try_acquire_posix.cc: Likewise.
      	* testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
      	* testsuite/30_threads/latch/1.cc: New test.
      	* testsuite/30_threads/latch/2.cc: New test.
      	* testsuite/30_threads/latch/3.cc: New test.
      	* testsuite/util/atomic/wait_notify_util.h: New File.
      83a1beee
    • Jason Merrill's avatar
      dwarf2: ICE with local class in unused function [PR97918] · 89d9c634
      Jason Merrill authored
      Here, since we only mention bar<B>, we never emit debug information for it.
      But we do emit debug information for H<J>::h, so we need to refer to the
      debug info for bar<B>::J even though there is no bar<B>.  We deal with this
      sort of thing in dwarf2out with the limbo_die_list; parentless dies like J
      get attached to the CU at EOF.  But here, we were flushing the limbo list,
      then generating the template argument DIE for H<J> that refers to J, which
      adds J to the limbo list, too late to be flushed.  So let's flush a little
      later.
      
      gcc/ChangeLog:
      
      	PR c++/97918
      	* dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list
      	after gen_scheduled_generic_parms_dies.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/97918
      	* g++.dg/debug/localclass2.C: New test.
      89d9c634
    • Martin Sebor's avatar
      PR middle-end/97861 - ICE on an invalid redeclaration of a function with attribute access · 27c5416f
      Martin Sebor authored
      gcc/c-family/ChangeLog:
      	* c-warn.c (warn_parm_array_mismatch): Bail on invalid redeclarations
      	with fewer arguments.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/attr-access-4.c: New test.
      27c5416f
    • François Dumont's avatar
      libstdc++: Limit memory allocation in stable_sort/inplace_merge (PR 83938) · ba23e045
      François Dumont authored
      
      Reduce memory allocation in stable_sort/inplace_merge algorithms to what is needed
      by the implementation.
      
      Co-authored-by: default avatarJohn Chang <john.chang@samba.tv>
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/83938
      	* include/bits/stl_tempbuf.h (get_temporary_buffer): Change __len
      	computation in the loop to avoid truncation.
      	* include/bits/stl_algo.h:
      	(__inplace_merge): Take temporary buffer length from smallest range.
      	(__stable_sort): Limit temporary buffer length.
      	* testsuite/25_algorithms/inplace_merge/1.cc (test4): New.
      	* testsuite/performance/25_algorithms/stable_sort.cc: Test stable_sort
      	under different heap memory conditions.
      	* testsuite/performance/25_algorithms/inplace_merge.cc: New test.
      ba23e045
    • Maciej W. Rozycki's avatar
      libada: Check for the presence of _SC_NPROCESSORS_ONLN · 9e071b6e
      Maciej W. Rozycki authored
      Check for the presence of _SC_NPROCESSORS_ONLN rather than using a list
      of OS-specific macros to decide whether to use `sysconf' like elsewhere
      across GCC sources, fixing a compilation error:
      
      adaint.c: In function '__gnat_number_of_cpus':
      adaint.c:2398:26: error: '_SC_NPROCESSORS_ONLN' undeclared (first use in this function)
       2398 |   cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
            |                          ^~~~~~~~~~~~~~~~~~~~
      adaint.c:2398:26: note: each undeclared identifier is reported only once for each function it appears in
      
      at least with with VAX/NetBSD 1.6.2.
      
      	gcc/ada/
      	* adaint.c (__gnat_number_of_cpus): Check for the presence of
      	_SC_NPROCESSORS_ONLN rather than a list of OS-specific macros
      	to decide whether to use `sysconf'.
      9e071b6e
    • Maciej W. Rozycki's avatar
      NetBSD/libgcc: Check for TARGET_DL_ITERATE_PHDR in the unwinder · f50c417a
      Maciej W. Rozycki authored
      Disable USE_PT_GNU_EH_FRAME frame unwinder support for old OS versions,
      fixing compilation errors:
      
      .../libgcc/unwind-dw2-fde-dip.c:75:21: error: unknown type name 'Elf_Phdr'
         75 | # define ElfW(type) Elf_##type
            |                     ^~~~
      .../libgcc/unwind-dw2-fde-dip.c:132:9: note: in expansion of macro 'ElfW'
        132 |   const ElfW(Phdr) *p_eh_frame_hdr;
            |         ^~~~
      .../libgcc/unwind-dw2-fde-dip.c:75:21: error: unknown type name 'Elf_Phdr'
         75 | # define ElfW(type) Elf_##type
            |                     ^~~~
      .../libgcc/unwind-dw2-fde-dip.c:133:9: note: in expansion of macro 'ElfW'
        133 |   const ElfW(Phdr) *p_dynamic;
            |         ^~~~
      .../libgcc/unwind-dw2-fde-dip.c:165:37: warning: 'struct dl_phdr_info' declared inside parameter list will not be visible outside of this definition or declaration
        165 | _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
            |                                     ^~~~~~~~~~~~
      [...]
      
      and producing a working cross-compiler at least with VAX/NetBSD 1.6.2.
      
      	libgcc/
      	* unwind-dw2-fde-dip.c [__OpenBSD__ || __NetBSD__]
      	(USE_PT_GNU_EH_FRAME): Do not define if !TARGET_DL_ITERATE_PHDR.
      f50c417a
    • Martin Sebor's avatar
      PR middle-end/97879 - ICE on invalid mode in attribute access · df90f070
      Martin Sebor authored
      gcc/c-family/ChangeLog:
      
      	PR middle-end/97879
      	* c-attribs.c (handle_access_attribute): Handle ATTR_FLAG_INTERNAL.
      	Error out on invalid modes.
      
      gcc/c/ChangeLog:
      	PR middle-end/97879
      	* c-decl.c (start_function): Set ATTR_FLAG_INTERNAL in flags.
      
      gcc/ChangeLog:
      
      	PR middle-end/97879
      	* tree-core.h (enum attribute_flags): Add ATTR_FLAG_INTERNAL.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/97879
      	* gcc.dg/attr-access-3.c: New test.
      df90f070
    • Ian Lance Taylor's avatar
      compiler, libgo: change mangling scheme · a01dda3c
      Ian Lance Taylor authored
      Overhaul the mangling scheme to avoid ambiguities if the package path
      contains a dot. Instead of using dot both to separate components and
      to mangle characters, use dot only to separate components and use
      underscore to mangle characters.
      
      For golang/go#41862
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/271726
      a01dda3c
    • François Dumont's avatar
      libstdc++: _Rb_tree code cleanup, remove lambdas · 90bf60c3
      François Dumont authored
      Use new template parameters to replace usage of lambdas to move or not
      tree values on copy.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/move.h (_GLIBCXX_FWDREF): New.
      	* include/bits/stl_tree.h: Adapt to use latter.
      	(_Rb_tree<>::_M_clone_node): Add _MoveValue template parameter.
      	(_Rb_tree<>::_M_mbegin): New.
      	(_Rb_tree<>::_M_begin): Use latter.
      	(_Rb_tree<>::_M_copy): Add _MoveValues template parameter.
      	* testsuite/23_containers/map/allocator/move_cons.cc: New test.
      	* testsuite/23_containers/multimap/allocator/move_cons.cc: New test.
      	* testsuite/23_containers/multiset/allocator/move_cons.cc: New test.
      	* testsuite/23_containers/set/allocator/move_cons.cc: New test.
      90bf60c3
    • Jan Hubicka's avatar
      Improve hashing of decls in ipa-icf-gimple · d1081010
      Jan Hubicka authored
      Another remaining case is that we end up comparing calls with mismatching
      number of parameters or with different permutations of them.
      
      This is because we hash decls to nothing. This patch improves that by
      hashing decls by their code and parm decls by indexes that are stable.
      Also for defualt defs in SSA_NAMEs we can add the corresponding decl (that
      is usually parm decls).
      
      Still we could improve on this by hasing ssa names by their definit parameters
      and possibly making maps of other decls and assigning them stable function
      local IDs.
      
      	* ipa-icf-gimple.c (func_checker::hash_operand): Improve hashing of
      	decls.
      d1081010
    • Jan Hubicka's avatar
      Only compare sizes of automatic variables · 4c3b16f3
      Jan Hubicka authored
      one of common remaining reasons for ICF to fail after loading in fuction
      body is mismatched type of automatic vairable.   This is becuase
      compatible_types_p resorts to checking TYPE_MAIN_VARIANTS for
      euqivalence that prevents merging many TBAA compaitle cases.  (And thus
      is also not reflected by the hash extended by alias sets of accesses.)
      
      Since in gimple
      automatic variables are just blocks of memory I think we should only
      check its size only. All accesses are matched when copmparing the actual
      loads/stores.
      
      I am not sure if we need to match types of other DECLs but I decided I can try
      to be safe here: for PARM_DECl/RESUILT_DECL we match them anyway to be sure
      that functions are ABI compatible.  For CONST_DECL and readonly global
      VAR_DECLs they are matched when comparing their constructors.
      
      	* ipa-icf-gimple.c (func_checker::compare_decl): Do not compare types
      	of local variables.
      4c3b16f3
    • Andrew MacLeod's avatar
      re: FAIL: gcc.dg/pr97515.c · 65854626
      Andrew MacLeod authored
      Adjust testcase to check in CCP not EVRP.
      
      	gcc/testuite/
      	* gcc.dg/pr97515.c: Check in ccp2, not evrp.
      65854626
    • Andrea Corallo's avatar
      PR target/97727 aarch64: [testcase] fix bf16_vstN_lane_2.c for big endian targets · f671b3d7
      Andrea Corallo authored
      gcc/testsuite/ChangeLog
      
      2020-11-09  Andrea Corallo  <andrea.corallo@arm.com>
      
      	PR target/97727
      	* gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_2.c: Relax
      	regexps.
      f671b3d7
    • Nathan Sidwell's avatar
      doc: Fixup a couple of formatting nits · bf0a3968
      Nathan Sidwell authored
      I noticed a couple of places we used @code{program} instead of
      @command{program}.
      
      	gcc/
      	* doc/invoke.texi: Replace a couple of @code with @command
      bf0a3968
    • Andrea Corallo's avatar
      [PR target/97726] arm: [testsuite] fix some simd tests on armbe · 86706296
      Andrea Corallo authored
      2020-11-10  Andrea Corallo  <andrea.corallo@arm.com>
      
      	PR target/97726
      	* gcc.target/arm/simd/bf16_vldn_1.c: Relax regexps not to fail on
      	big endian.
      	* gcc.target/arm/simd/vldn_lane_bf16_1.c: Likewise
      	* gcc.target/arm/simd/vmmla_1.c: Add -mfloat-abi=hard flag.
      86706296
    • Tamar Christina's avatar
      SLP: Have vectorizable_slp_permutation set type on invariants · ad318e3f
      Tamar Christina authored
      This modifies vectorizable_slp_permutation to update the type of the children
      of a perm node before trying to permute them.  This allows us to be able to
      permute invariant nodes.
      
      This will be covered by test from the SLP pattern matcher.
      
      gcc/ChangeLog:
      
      	* tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes
      	when needed.
      ad318e3f
Loading