Skip to content
Snippets Groups Projects
  1. Dec 18, 2020
    • Patrick Palka's avatar
      libstdc++: Import MSVC floating-point std::to_chars testcases · ddb9c661
      Patrick Palka authored
      The testcases are imported almost verbatim, with the only change being
      to the -double_nan and -float_nan testcases.  We expect these values to
      be formatted as "-nan" instead of "-nan(ind)".
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/20_util/to_chars/double.cc: New test, consisting of
      	testcases imported from the MSVC STL testsuite.
      	* testsuite/20_util/to_chars/float.cc: Likewise.
      ddb9c661
    • Patrick Palka's avatar
      libstdc++: Add floating-point std::to_chars implementation · 3c57e692
      Patrick Palka authored
      This implements the floating-point std::to_chars overloads for float,
      double and long double.  We use the Ryu library to compute the shortest
      round-trippable fixed and scientific forms for float, double and long
      double.  We also use Ryu for performing explicit-precision fixed and
      scientific formatting for float and double. For explicit-precision
      formatting for long double we fall back to using printf.  Hexadecimal
      formatting for float, double and long double is implemented from
      scratch.
      
      The supported long double binary formats are binary64, binary80 (x86
      80-bit extended precision), binary128 and ibm128.
      
      Much of the complexity of the implementation is in computing the exact
      output length before handing it off to Ryu (which doesn't do bounds
      checking).  In some cases it's hard to compute the output length
      beforehand, so in these cases we instead compute an upper bound on the
      output length and use a sufficiently-sized intermediate buffer only if
      necessary.
      
      Another source of complexity is in the general-with-precision formatting
      mode, where we need to do zero-trimming of the string returned by Ryu,
      and where we also take care to avoid having to format the number through
      Ryu a second time when the general formatting mode resolves to fixed
      (which we determine by doing a scientific formatting first and
      inspecting the scientific exponent).  We avoid going through Ryu twice
      by instead transforming the scientific form to the corresponding fixed
      form via in-place string manipulation.
      
      This implementation is non-conforming in a couple of ways:
      
      1. For the shortest hexadecimal formatting, we currently follow the
         Microsoft implementation's decision to be consistent with the
         output of printf's '%a' specifier at the expense of sometimes not
         printing the shortest representation.  For example, the shortest hex
         form for the number 1.08p+0 is 2.1p-1, but we output the former
         instead of the latter, as does printf.
      
      2. The Ryu routine generic_binary_to_decimal that we use for performing
         shortest formatting for large floating point types is implemented
         using the __int128 type, but some targets with a large long double
         type lack __int128 (e.g. i686), so we can't perform shortest
         formatting of long double on such targets through Ryu.  As a
         temporary stopgap this patch makes the long double to_chars overloads
         just dispatch to the double overloads on these targets, which means
         we lose precision in the output.  (We could potentially fix this by
         writing a specialized version of Ryu's generic_binary_to_decimal
         routine that uses uint64_t instead of __int128.)  [Though I wonder if
         there's a better way to work around the lack of __int128 on i686
         specifically?]
      
      3. Our shortest formatting for __ibm128 doesn't guarantee the round-trip
         property if the difference between the high- and low-order exponent
         is large.  This is because we treat __ibm128 as if it has a
         contiguous 105-bit mantissa by merging the mantissas of the high-
         and low-order parts (using code extracted from glibc), so we
         potentially lose precision from the low-order part.  This seems to be
         consistent with how glibc printf formats __ibm128.
      
      libstdc++-v3/ChangeLog:
      
      	* config/abi/pre/gnu.ver: Add new exports.
      	* include/std/charconv (to_chars): Declare the floating-point
      	overloads for float, double and long double.
      	* src/c++17/Makefile.am (sources): Add floating_to_chars.cc.
      	* src/c++17/Makefile.in: Regenerate.
      	* src/c++17/floating_to_chars.cc: New file.
      	(to_chars): Define for float, double and long double.
      	* testsuite/20_util/to_chars/long_double.cc: New test.
      3c57e692
    • Patrick Palka's avatar
      libstdc++: Apply modifications to our local copy of Ryu · 50335069
      Patrick Palka authored
      This performs the following modifications to our local copy of Ryu in
      order to make it more readily usable for our std::to_chars
      implementation:
      
        * Remove all #includes
        * Remove copy_special_str routines
        * Adjust the exponent formatting to match printf
        * Remove some functions we're not going to use
        * Add an out-parameter to d2exp_buffered_n for the scientific exponent
        * Store the sign bit inside struct floating_decimal_[32|64]
        * Rename [df]2s_buffered_n and change their return type
        * Make generic_binary_to_decimal take the bit representation in parts
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c,
      	src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c,
      	src/c++17/ryu/d2s_intrinsics.h, src/c++17/ryu/f2s.c,
      	src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c:
      	Apply local modifications.
      50335069
    • Patrick Palka's avatar
      libstdc++: Import parts of the Ryu library · e3f0eaa2
      Patrick Palka authored
      This imports the source files from the Ryu library that define
      d2s_buffered_n, f2s_buffered_n, d2fixed_buffered_n, d2exp_buffered_n and
      generic_binary_to_decimal, which we're going to use as the base of our
      std::to_chars implementation.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/ryu/MERGE: New file.
      	* src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c,
      	src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c,
      	src/c++17/ryu/d2s_full_table.h, src/c++17/ryu/d2s_intrinsics.h,
      	src/c++17/ryu/digit_table.h, src/c++17/ryu/f2s.c,
      	src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c,
      	src/c++17/ryu/generic_128.h, src/c++17/ryu/ryu_generic_128.h:
      	Import these files from the Ryu library.
      e3f0eaa2
    • Patrick Palka's avatar
      c++: More precise tracking of potentially unstable satisfaction · 731a32b3
      Patrick Palka authored
      This makes tracking of potentially unstable satisfaction results more
      precise by recording the specific types for which completion failed
      during satisfaction.  We now recompute a satisfaction result only if one
      of these types has been completed since the last time we computed the
      satisfaction result.  Thus the number of times that we recompute a
      satisfaction result is now bounded by the number of such incomplete
      types, rather than being effectively unbounded.  This allows us to
      remove the invalid assumption in note_ftc_for_satisfaction that was
      added to avoid a compile time performance regression in cmcstl2 due to
      repeated recomputation of a satisfaction result that depended on
      completion of a permanently incomplete class template specialization.
      
      In order to continue to detect the instability in concepts-complete3.C,
      we also need to explicitly keep track of return type deduction failure
      alongside type completion failure.  So this patch also adds a call to
      note_ftc_for_satisfaction in require_deduced_type.
      
      gcc/cp/ChangeLog:
      
      	* constraint.cc (satisfying_constraint): Move up definition
      	and give it bool type.
      	(failed_type_completion_count): Replace with ...
      	(failed_type_completions): ... this.
      	(note_failed_type_completion_for_satisfaction): Append the
      	supplied argument to failed_type_completions.
      	(some_type_complete_p): Define.
      	(sat_entry::maybe_unstable): Replace with ...
      	(sat_entry::ftc_begin, sat_entry::ftc_end): ... these.
      	(satisfaction_cache::ftc_count): Replace with ...
      	(satisfaction_cache::ftc_begin): ... this.
      	(satisfaction_cache::satisfaction_cache): Adjust accordingly.
      	(satisfaction_cache::get): Adjust accordingly, using
      	some_type_complete_p.
      	(satisfaction_cache::save): Adjust accordingly.
      	(satisfying_constraint_p): Remove unused function.
      	(satisfy_constraint): Set satisfying_constraint.
      	(satisfy_declaration_constraints): Likewise.
      	* decl.c (require_deduced_type): Call
      	note_failed_type_completion_for_satisfaction.
      731a32b3
    • Patrick Palka's avatar
      c++: Diagnose self-recursive satisfaction · 79f57d5c
      Patrick Palka authored
      This patch further extends the satisfaction_cache class to diagnose
      self-recursive satisfaction.
      
      gcc/cp/ChangeLog:
      
      	* constraint.cc (sat_entry::evaluating): New member.
      	(satisfaction_cache::get): If entry->evaluating, diagnose
      	self-recursive satisfaction.  Otherwise, set entry->evaluating
      	if we're not reusing a cached satisfaction result.
      	(satisfaction_cache::save): Clear entry->evaluating.
      	(satisfy_atom): Set up diagnosing_failed_constraint before the
      	first call to get().
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/96840
      	* g++.dg/cpp2a/concepts-pr88395.C: Adjust to expect the
      	self-recursive satisfaction to get directly diagnosed.
      	* g++.dg/cpp2a/concepts-recursive-sat2.C: Likewise.
      	* g++.dg/cpp2a/concepts-recursive-sat4.C: New test.
      79f57d5c
    • Patrick Palka's avatar
      c++: Diagnose unstable satisfaction · 20f29286
      Patrick Palka authored
      This implements lightweight heuristical detection and diagnosing of
      satisfaction whose result changes at different points in the program,
      which renders the program ill-formed NDR as of P2104.  We've recently
      started to more aggressively cache satisfaction results, and so the goal
      with this patch is to make this caching behavior more transparent to
      the user.
      
      A satisfaction result is flagged as "potentially unstable" (at the atom
      granularity) if during its computation, some type completion failure
      occurs.  This is detected by making complete_type_or_maybe_complain
      increment a counter upon failure and comparing the value of the counter
      before and after satisfaction.  (We don't instrument complete_type
      directly because it's used "opportunistically" in many spots where type
      completion failure doesn't necessary lead to substitution failure.)
      
      Such flagged satisfaction results are always recomputed from scratch,
      even when performing satisfaction quietly.  When saving a satisfaction
      result, we now compare the computed result with the cached result, and
      if they differ, proceed with diagnosing the instability.
      
      Most of the implementation is confined to the satisfaction_cache class,
      which has been completely rewritten.
      
      gcc/cp/ChangeLog:
      
      	* constraint.cc (failed_type_completion_count): New.
      	(note_failed_type_completion_for_satisfaction): New.
      	(sat_entry::constr): Rename to ...
      	(sat_entry::atom): ... this.
      	(sat_entry::location): New member.
      	(sat_entry::maybe_unstable): New member.
      	(sat_entry::diagnose_instability): New member.
      	(struct sat_hasher): Adjust after the above renaming.
      	(get_satisfaction, save_satisfaction): Remove.
      	(satisfaction_cache): Rewrite completely.
      	(satisfy_atom): When instantiation of the parameter mapping
      	fails, set diagnose_instability.  Propagate location from
      	inst_cache.entry to cache.entry if the secondary lookup
      	succeeded.
      	(satisfy_declaration_constraints): When
      	failed_type_completion_count differs before and after
      	satisfaction, then don't cache the satisfaction result.
      	* cp-tree.h (note_failed_type_completion_for_satisfaction):
      	Declare.
      	* pt.c (tsubst) <case TYPENAME_TYPE>: Use
      	complete_type_or_maybe_complain instead of open-coding it.
      	* typeck.c (complete_type_or_maybe_complain): Call
      	note_failed_type_completion_for_satisfaction when type
      	completion fails.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp2a/concepts-complete1.C: New test.
      	* g++.dg/cpp2a/concepts-complete2.C: New test.
      	* g++.dg/cpp2a/concepts-complete3.C: New test.
      20f29286
    • GCC Administrator's avatar
      Daily bump. · cd69e3d5
      GCC Administrator authored
      cd69e3d5
  2. Dec 17, 2020
    • Przemyslaw Wirkus's avatar
      arm: Add support for Cortex-A78C · 35b8d268
      Przemyslaw Wirkus authored
      This patch adds support for -mcpu=cortex-a78c command line option.
      For more information about this processor, see [0]:
      
      [0] https://developer.arm.com/ip-products/processors/cortex-a/cortex-a78c
      
      gcc/ChangeLog:
      
      	* config/arm/arm-cpus.in: Add Cortex-A78C core.
      	* config/arm/arm-tables.opt: Regenerate.
      	* config/arm/arm-tune.md: Regenerate.
      	* doc/invoke.texi: Update docs.
      35b8d268
    • Richard Sandiford's avatar
      rtl-ssa: Fix reg_raw_mode thinko [PR98347] · 00bad763
      Richard Sandiford authored
      I'd used reg_raw_mode[regno] for general registers, even though
      the array is only valid for hard registers.  This patch uses
      regno_reg_rtx instead.
      
      gcc/
      	PR rtl-optimization/98347
      	* rtl-ssa/access-utils.h (full_register): Use regno_reg_rtx
      	instead of reg_raw_mode.
      00bad763
    • H.J. Lu's avatar
      Update default_estimated_poly_value prototype in targhooks.h · 4a7a3110
      H.J. Lu authored
      commit 64432b68
      Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
      Date:   Thu Dec 17 18:02:37 2020 +0000
      
          vect, aarch64: Extend SVE vs Advanced SIMD costing decisions in vect_better_loop_vinfo_p
      
      changed default_estimated_poly_value to
      
      HOST_WIDE_INT
      default_estimated_poly_value (poly_int64 x, poly_value_estimate_kind)
      {
        return x.coeffs[0];
      }
      
      Update default_estimated_poly_value prototype in targhooks.h to match it.
      
      	* targhooks.h (default_estimated_poly_value): Updated.
      4a7a3110
    • Nathan Sidwell's avatar
      doc: Standard library header units · b79ce6e1
      Nathan Sidwell authored
      It seems users are confused by the lack of standard library header
      units.
      
      	gcc/
      	* doc/invoke.texi (C++ Modules): Document lack of std
      	library header units.
      b79ce6e1
    • Kyrylo Tkachov's avatar
      vect, aarch64: Extend SVE vs Advanced SIMD costing decisions in vect_better_loop_vinfo_p · 64432b68
      Kyrylo Tkachov authored
      While experimenting with some backend costs for Advanced SIMD and SVE I
      hit many cases where GCC would pick SVE for VLA auto-vectorisation even when
      the backend very clearly presented cheaper costs for Advanced SIMD.
      For a simple float addition loop the SVE costs were:
      
      vec.c:9:21: note:  Cost model analysis:
        Vector inside of loop cost: 28
        Vector prologue cost: 2
        Vector epilogue cost: 0
        Scalar iteration cost: 10
        Scalar outside cost: 0
        Vector outside cost: 2
        prologue iterations: 0
        epilogue iterations: 0
        Minimum number of vector iterations: 1
        Calculated minimum iters for profitability: 4
      
      and for Advanced SIMD (Neon) they're:
      
      vec.c:9:21: note:  Cost model analysis:
        Vector inside of loop cost: 11
        Vector prologue cost: 0
        Vector epilogue cost: 0
        Scalar iteration cost: 10
        Scalar outside cost: 0
        Vector outside cost: 0
        prologue iterations: 0
        epilogue iterations: 0
        Calculated minimum iters for profitability: 0
      vec.c:9:21: note:    Runtime profitability threshold = 4
      
      yet the SVE one was always picked. With guidance from Richard this seems
      to be due to the vinfo comparisons in vect_better_loop_vinfo_p, in
      particular the part with the big comment explaining the
      estimated_rel_new * 2 <= estimated_rel_old heuristic.
      
      This patch extends the comparisons by introducing a three-way estimate
      kind for poly_int values that the backend can distinguish.
      This allows vect_better_loop_vinfo_p to ask for minimum, maximum and
      likely estimates and pick Advanced SIMD overs SVE when it is clearly cheaper.
      
      gcc/
      	* target.h (enum poly_value_estimate_kind): Define.
      	(estimated_poly_value): Take an estimate kind argument.
      	* target.def (estimated_poly_value): Update definition for the
      	above.
      	* doc/tm.texi: Regenerate.
      	* targhooks.c (estimated_poly_value): Update prototype.
      	* tree-vect-loop.c (vect_better_loop_vinfo_p): Use min, max and
      	likely estimates of VF to pick between vinfos.
      	* config/aarch64/aarch64.c (aarch64_cmp_autovec_modes): Use
      	estimated_poly_value instead of aarch64_estimated_poly_value.
      	(aarch64_estimated_poly_value): Take a kind argument and handle
      	it.
      64432b68
    • Nathan Sidwell's avatar
      c++: Fix clang problem [PR 98340] · 2d7a40fa
      Nathan Sidwell authored
      Clang didn't like sizeot (uintset::value) in a templated context.  Not sure
      where the problem lies -- ambiguous std, gcc erroneous accept or clang erroneous
      reject.  Anyway, this avoids that construct.
      
      	PR c++/98340
      	gcc/cp/
      	* module.cc (uintset<T>::hash::add): Use uintset (0u).MEMBER,
      	rather than uintset::MEMBER.
      2d7a40fa
    • Nathan Sidwell's avatar
      libcody: Allow PIC [PR 98324] · d1ad55c4
      Nathan Sidwell authored
      While this doesn't fix 98324, it was an omission.  Cribbed code from
      libcpp to build libcody as PIC.
      
      	libcody/
      	* configure.ac: Add --enable-host-shared.
      	* Makefile.in: Add FLAGPIC.
      	* configure: Regenerated.
      d1ad55c4
    • Jonathan Wakely's avatar
      libstdc++: Test errno macros directly for all targets [PR 93151] · 217d5bea
      Jonathan Wakely authored
      This applies the same changes to the djgpp and mingw versions of
      error_constants.h as r11-6137 did for the generic version.
      
      All of these constants are defined as macros by <errno.h> on these
      targets, so we can just test the macro directly instead of checking for
      it at configure time.
      
      libstdc++-v3/ChangeLog:
      
      	* config/os/djgpp/error_constants.h: Test POSIX errno macros
      	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
      	* config/os/mingw32-w64/error_constants.h: Likewise.
      	* config/os/mingw32/error_constants.h: Likewise.
      217d5bea
    • Jonathan Wakely's avatar
      libstdc++: Fix condition for gthreads-timed effective-target · b2bc1bb6
      Jonathan Wakely authored
      The refactoring in r11-5500 altered the condition for the gthreads-timed
      test from #if to #ifdef. For some reason that macro is always defined,
      rather than being defined to 1 or undefined like most of our autoconf
      macros. That means the test always passes now, even for targets where
      the macro is defined to 0 (specifically, Darwin). That causes some tests
      to FAIL when they should have been UNSUPPORTED.
      
      This restores the previous behaviour.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed):
      	Fix condition for _GTHREAD_USE_MUTEX_TIMEDLOCK test.
      b2bc1bb6
    • Andrea Corallo's avatar
      arm: Fix bootstrap · ec2a58a3
      Andrea Corallo authored
      gcc/ChangeLog
      
      2020-12-17  Andrea Corallo  <andrea.corallo@arm.com>
      
      	* config/arm/arm_neon.h (vcreate_p64): Remove call to
      	'__builtin_neon_vcreatedi'.
      ec2a58a3
    • Andrew MacLeod's avatar
      Fix trap in pointer conversion in op1_range. · c25b5046
      Andrew MacLeod authored
      Processing op1_range for conversion between a non-pointer and pointer
      shouldnt do any fancy math.
      
      	gcc/
      	PR tree-optimization/97750
      	* range-op.cc (operator_cast::op1_range): Handle pointers better.
      	gcc/testsuite/
      	* gcc.dg/pr97750.c: New.
      c25b5046
    • Rainer Orth's avatar
      rtl-ssa: Include memmodel.h before tm_p.h · d592ee3a
      Rainer Orth authored
      The RTL SSA merge broke SPARC bootstrap:
      
      In file included from ./tm_p.h:4,
                       from /vol/gcc/src/hg/master/local/gcc/rtl-ssa.h:54,
                       from /vol/gcc/src/hg/master/local/gcc/fwprop.c:29:
      /vol/gcc/src/hg/master/local/gcc/config/sparc/sparc-protos.h:45:47: error: use of enum 'memmodel' without previous declaration
       extern void sparc_emit_membar_for_model (enum memmodel, int, int);
                                                     ^~~~~~~~
      
      and similarly in rtl-ssa/functions.cc, rtl-ssa/changes.cc, and
      rtl-ssa/insns.cc.
      
      Fixed by moving the memmove.h include in rtl-ssa.h before tm_p.h.
      
      Tested on sparc-sun-solaris2.11 and i386-pc-solaris2.11.
      
      
      2020-12-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
      
      	gcc:
      	* rtl-ssa.h: Include memmodel.h before tm_p.h.
      d592ee3a
    • Nathan Sidwell's avatar
      bootstrap: Don't use strsignal [PR 98300] · b429f53e
      Nathan Sidwell authored
      Sadly strsignal is nonportable, so signal numbers it is then.
      
      	c++tools/
      	* server.cc (crash_signal): Don't use strsignal.
      b429f53e
    • Jonathan Wakely's avatar
      libstdc++: Fix -Wunused warning · 9f9dbc8e
      Jonathan Wakely authored
      As noted in PR 66146 comment 35, there is a new warning in the new
      std::call_once implementation.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++11/mutex.cc (std::once_flag::_M_finish): Add
      	maybe_unused attribute to variable used in assertion.
      9f9dbc8e
    • Jonathan Wakely's avatar
      libstdc++: Fix preprocessor condition [PR 98344] · 8dc63f13
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/98344
      	* include/bits/semaphore_base.h: Fix preprocessor condition.
      8dc63f13
    • Jonathan Wakely's avatar
      libstdc++: Move std::hash<std::thread::id> to <bits/std_thread.h> · 8cdca5f9
      Jonathan Wakely authored
      This makes the hash function available without including the whole of
      <thread>, which is needed for <barrier>.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/std_thread.h (hash<thread::id>): Move here,
      	from ...
      	* include/std/thread (hash<thread::id>): ... here.
      8cdca5f9
    • Jonathan Wakely's avatar
      libstdc++: Regenerate autoconf files · f5feee6a
      Jonathan Wakely authored
      I forgot to regenerate these files in r11-6137.
      
      libstdc++-v3/ChangeLog:
      
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      f5feee6a
    • Nathan Sidwell's avatar
      bootstrap: Fix some windows issues [PR 98300] · 09616422
      Nathan Sidwell authored
      When breaking out the sample server from the gcc/cp directory, it lost
      its check for mmap, and the sample resolver just assumed it was there.
      Fixed thusly.  The non-mapping paths in module.cc weren't (recently)
      excercised, and led to a signedness warning.  Finally I'd missed
      c++tools's config.h.in in the gcc_update script.  There I took the
      opportunity of adding a 'tools' segment of the dependency lists.
      
      	PR bootstrap/98300
      	contrib/
      	* gcc_update: Add c++tools/config.h.in.
      	c++tools/
      	* configure.ac: Check for sys/mman.h.
      	* resolver.cc: Don't assume mmap, O_CLOEXEC are available.  Use
      	xmalloc.
      	* config.h.in: Regenerated.
      	* configure: Regenerated.
      	gcc/cp/
      	* module.cc: Fix ::read, ::write result signedness comparisons.
      09616422
    • Nathan Sidwell's avatar
      libcody: Remove nop asm · 5357b162
      Nathan Sidwell authored
      This asm was a useful place for gdb to drop a breakpoint and make it
      clear where you were when debugging.  I took a punt that 'surely every
      arch has a nop instruction'. Well, no, some apparently have nops with
      operands (what, do nothing harder? :)
      
      	libcody/
      	* fatal.cc (HCF): Remove nop breakpoint lander.
      5357b162
    • Jakub Jelinek's avatar
      c++tools: Fix up c++tools for --with-gcc-major-version-only · 4e7e7c13
      Jakub Jelinek authored
      Seems c++tools doesn't honor --with-gcc-major-version-only.
      Our distro uses that flag and so everything is installed in
      /usr/lib/gcc/<target>/11/...
      /usr/libexec/gcc/<target>/11/...
      except
      /usr/libexec/gcc/<target>/11.0.0/g++-mapper-server
      
      The following patch should fix that.
      
      2020-12-17  Jakub Jelinek  <jakub@redhat.com>
      
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Remove variable.
      	(gcc_version): New variable.
      	(libexecsubdir): Use $(gcc_version) instead of $(version).
      	* configure: Regenerated.
      4e7e7c13
    • Jakub Jelinek's avatar
      shrink-wrap: Don't put on incoming EDGE_CROSSING [PR98289] · 62cb9680
      Jakub Jelinek authored
      As mentioned in the PR, shrink-wrapping disqualifies for prologue
      placement basic blocks that have EDGE_CROSSING incoming edge.
      I don't see why that is necessary, those edges seem to be redirected
      just fine, both on x86_64 and powerpc64.  In the former case, they
      are usually conditional jumps that patch_jump_insn can handle just fine,
      after all, they were previously crossing and will be crossing after
      the redirection too, just to a different label.  And in the powerpc64
      case, it is a simple_jump instead that again seems to be handled by
      patch_jump_insn just fine.
      Sure, redirecting an edge that was previously not crossing to be crossing or
      vice versa can fail, but that is not what shrink-wrapping needs.
      Also tested in GCC 8 with this patch and don't see ICEs there either
      (though, of course, I'm not suggesting we should backport this to release
      branches).
      The old ICEs could have been fixed by PR87475 fix or some other one
      years ago.
      
      2020-12-17  Jakub Jelinek  <jakub@redhat.com>
      
      	PR rtl-optimization/98289
      	* shrink-wrap.c (can_get_prologue): Don't punt on EDGE_CROSSING
      	incoming edges.
      
      	* gcc.target/i386/pr98289.c: New test.
      	* gcc.dg/torture/pr98289.c: New test.
      62cb9680
    • Arnaud Charlet's avatar
      [Ada] Performance of CW_Membership · 6a692663
      Arnaud Charlet authored
      gcc/ada/
      
      	* libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Move
      	to spec to allow inlining.
      
      gcc/testsuite/
      
      	* gnat.dg/debug15.adb: Remove fragile testcase.
      6a692663
    • Arnaud Charlet's avatar
      [Ada] Remove unused subprograms in validsw · 68dd6649
      Arnaud Charlet authored
      gcc/ada/
      
      	* checks.adb: Remove, not used.
      	* checks.ads: Likewise.
      	* exp_ch6.adb: Likewise.
      	* exp_ch7.adb: Likewise.
      	* exp_ch7.ads: Likewise.
      	* exp_fixd.adb: Likewise.
      	* exp_tss.adb: Likewise.
      	* exp_tss.ads: Likewise.
      	* exp_util.adb: Likewise.
      	* exp_util.ads: Likewise.
      	* gnat1drv.adb: Likewise.
      	* libgnat/s-finmas.adb: Likewise.
      	* libgnat/s-finmas.ads: Likewise.
      	* libgnat/system-aix.ads: Likewise.
      	* libgnat/system-darwin-arm.ads: Likewise.
      	* libgnat/system-darwin-ppc.ads: Likewise.
      	* libgnat/system-darwin-x86.ads: Likewise.
      	* libgnat/system-djgpp.ads: Likewise.
      	* libgnat/system-dragonfly-x86_64.ads: Likewise.
      	* libgnat/system-freebsd.ads: Likewise.
      	* libgnat/system-hpux-ia64.ads: Likewise.
      	* libgnat/system-hpux.ads: Likewise.
      	* libgnat/system-linux-alpha.ads: Likewise.
      	* libgnat/system-linux-arm.ads: Likewise.
      	* libgnat/system-linux-hppa.ads: Likewise.
      	* libgnat/system-linux-ia64.ads: Likewise.
      	* libgnat/system-linux-m68k.ads: Likewise.
      	* libgnat/system-linux-mips.ads: Likewise.
      	* libgnat/system-linux-ppc.ads: Likewise.
      	* libgnat/system-linux-riscv.ads: Likewise.
      	* libgnat/system-linux-s390.ads: Likewise.
      	* libgnat/system-linux-sh4.ads: Likewise.
      	* libgnat/system-linux-sparc.ads: Likewise.
      	* libgnat/system-linux-x86.ads: Likewise.
      	* libgnat/system-lynxos178-ppc.ads: Likewise.
      	* libgnat/system-lynxos178-x86.ads: Likewise.
      	* libgnat/system-mingw.ads: Likewise.
      	* libgnat/system-qnx-aarch64.ads: Likewise.
      	* libgnat/system-rtems.ads: Likewise.
      	* libgnat/system-solaris-sparc.ads: Likewise.
      	* libgnat/system-solaris-x86.ads: Likewise.
      	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
      	* libgnat/system-vxworks-arm.ads: Likewise.
      	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
      	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
      	* libgnat/system-vxworks-e500-vthread.ads: Likewise.
      	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
      	* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
      	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
      	* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
      	* libgnat/system-vxworks-ppc.ads: Likewise.
      	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
      	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
      	* libgnat/system-vxworks-x86-vthread.ads: Likewise.
      	* libgnat/system-vxworks-x86.ads: Likewise.
      	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-aarch64.ads: Likewise.
      	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-arm.ads: Likewise.
      	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
      	* repinfo.adb: Likewise.
      	* repinfo.ads: Likewise.
      	* rtsfind.ads: Likewise.
      	* sem_aux.adb: Likewise.
      	* sem_aux.ads: Likewise.
      	* sem_ch13.adb: Likewise.
      	* sem_ch13.ads: Likewise.
      	* sem_util.adb (Validity_Checks_Suppressed, TSS,
      	Is_All_Null_Statements, Known_Non_Negative,
      	Non_Limited_Designated_Type, Get_Binary_Nkind, Get_Unary_Nkind,
      	Is_Protected_Operation, Number_Components, Package_Body,
      	Validate_Independence, Independence_Checks): Likewise; update
      	comments.
      	* targparm.adb: Likewise.
      	* targparm.ads (AAM, AAM_Str, Fractional_Fixed_Ops,
      	Frontend_Layout, Make_Detach_Call, Target_Has_Fixed_Ops, Detach,
      	Back_End_Layout, Create_Dynamic_SO_Ref, Get_Dynamic_SO_Entity,
      	Is_Dynamic_SO_Ref, Is_Static_SO_Ref,
      	Fractional_Fixed_Ops_On_Target): Likewise.
      	* validsw.adb (Save_Validity_Check_Options,
      	Set_Default_Validity_Check_Options): Likewise.
      	* validsw.ads: Likewise.
      68dd6649
    • Arnaud Charlet's avatar
      [Ada] Remove unused files · acf190b2
      Arnaud Charlet authored
      gcc/ada/
      
      	* symbols.ads, symbols.adb: Removed no longer used.
      acf190b2
    • Arnaud Charlet's avatar
      [Ada] Code cleanup: remove Old_Requires_Transient_Scope · 98032cd4
      Arnaud Charlet authored
      gcc/ada/
      
      	* sem_util.adb (New_Requires_Transient_Scope): Renamed
      	Requires_Transient_Scope.
      	(Requires_Transient_Scope, Old_Requires_Transient_Scope,
      	Results_Differ): Removed.
      	* debug.adb: Remove -gnatdQ.
      98032cd4
    • Eric Botcazou's avatar
      [Ada] Minor comment fix in System.Val_Real · e2ff35b9
      Eric Botcazou authored
      gcc/ada/
      
      	* libgnat/s-valrea.adb (Need_Extra): Fix comment.
      e2ff35b9
    • Piotr Trojanek's avatar
      [Ada] Prevent early exits without restoring a global variable · 96c1f714
      Piotr Trojanek authored
      gcc/ada/
      
      	* sem_ch5.adb (Analyze_Case_Statement): Move modification of
      	Unblocked_Exit_Count after early return statements; fix typo in
      	comment.
      96c1f714
    • Piotr Trojanek's avatar
      [Ada] Reduce scopes of local variables for case and if statements · 44503272
      Piotr Trojanek authored
      gcc/ada/
      
      	* sem_ch5.adb (Analyze_Case_Statement): Change local variable
      	Exp to constant; remove unreferenced Last_Choice variable;
      	reduce scope of other variables.
      	(Analyze_If_Statement): Reduce scope of a local variable; add
      	comment.
      44503272
    • Piotr Trojanek's avatar
      [Ada] Refine type of a multi unit index number · 79482146
      Piotr Trojanek authored
      gcc/ada/
      
      	* opt.ads (Multiple_Unit_Index): Refine type from Int to Nat.
      79482146
    • Piotr Trojanek's avatar
      [Ada] Prevent In_Check_Node routine from going too far in the parent chain · 2f29ceb0
      Piotr Trojanek authored
      gcc/ada/
      
      	* sem_util.adb (In_Check_Node): Add guard and rename Node to
      	Par, just like it is done in surrounding routines, e.g.
      	In_Assertion_Expression_Pragma and In_Generic_Formal_Package.
      2f29ceb0
    • Bob Duff's avatar
      [Ada] Ada2020: AI12-0400 Ambiguities associated with Vector · 3e05da68
      Bob Duff authored
      gcc/ada/
      
      	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
      	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads,
      	libgnat/a-cidlli.adb, libgnat/a-cidlli.ads,
      	libgnat/a-cobove.adb, libgnat/a-cobove.ads,
      	libgnat/a-coinve.adb, libgnat/a-coinve.ads,
      	libgnat/a-convec.adb, libgnat/a-convec.ads: Add *_Vector
      	operations, remove default for Count, rename Append_One to be
      	Append.
      3e05da68
    • Arnaud Charlet's avatar
      [Ada] Crash on if expression inside declare expression · b7e68e7d
      Arnaud Charlet authored
      gcc/ada/
      
      	* sem_res.adb (Resolve_Declare_Expression): Need to establish a
      	transient scope in case Expression (N) requires actions to be
      	wrapped.  Code cleanup.
      	* exp_ch7.adb, exp_ch11.adb: Code cleanup.
      b7e68e7d
Loading