13.0.0-0.9
This commit is contained in:
parent
0af622a16d
commit
f05a075009
@ -1,124 +0,0 @@
|
|||||||
libstdc++: Update from latest fast_float [PR107468]
|
|
||||||
|
|
||||||
The following patch is a cherry-pick from
|
|
||||||
https://github.com/fastfloat/fast_float/pull/153
|
|
||||||
to restrict fast_float Clinger's fast path to when rounding mode
|
|
||||||
is FE_TONEAREST.
|
|
||||||
Using std::fegetround showed in benchmarks too slow, so instead
|
|
||||||
it uses a check with 2 float additions and comparison to verify
|
|
||||||
if rounding is FE_TONEAREST.
|
|
||||||
|
|
||||||
2022-11-20 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR libstdc++/107468
|
|
||||||
* src/c++17/fast_float/fast_float.h (detail::rounds_to_nearest): New
|
|
||||||
function, taken from https://github.com/fastfloat/fast_float/pull/153.
|
|
||||||
(from_chars_advanced): Only use Clinger's fast path if
|
|
||||||
detail::rounds_to_nearest().
|
|
||||||
* testsuite/20_util/from_chars/pr107468.cc: New test.
|
|
||||||
|
|
||||||
--- libstdc++-v3/src/c++17/fast_float/fast_float.h.jj 2022-04-28 15:56:18.315632888 +0200
|
|
||||||
+++ libstdc++-v3/src/c++17/fast_float/fast_float.h 2022-11-20 18:53:49.570830249 +0100
|
|
||||||
@@ -2842,6 +2842,48 @@ from_chars_result parse_infnan(const cha
|
|
||||||
return answer;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * Returns true if the floating-pointing rounding mode is to 'nearest'.
|
|
||||||
+ * It is the default on most system. This function is meant to be inexpensive.
|
|
||||||
+ * Credit : @mwalcott3
|
|
||||||
+ */
|
|
||||||
+fastfloat_really_inline bool rounds_to_nearest() noexcept {
|
|
||||||
+ // See
|
|
||||||
+ // A fast function to check your floating-point rounding mode
|
|
||||||
+ // https://lemire.me/blog/2022/11/16/a-fast-function-to-check-your-floating-point-rounding-mode/
|
|
||||||
+ //
|
|
||||||
+ // This function is meant to be equivalent to :
|
|
||||||
+ // prior: #include <cfenv>
|
|
||||||
+ // return fegetround() == FE_TONEAREST;
|
|
||||||
+ // However, it is expected to be much faster than the fegetround()
|
|
||||||
+ // function call.
|
|
||||||
+ //
|
|
||||||
+ // The volatile keywoard prevents the compiler from computing the function
|
|
||||||
+ // at compile-time.
|
|
||||||
+ // There might be other ways to prevent compile-time optimizations (e.g., asm).
|
|
||||||
+ // The value does not need to be std::numeric_limits<float>::min(), any small
|
|
||||||
+ // value so that 1 + x should round to 1 would do (after accounting for excess
|
|
||||||
+ // precision, as in 387 instructions).
|
|
||||||
+ static volatile float fmin = std::numeric_limits<float>::min();
|
|
||||||
+ float fmini = fmin; // we copy it so that it gets loaded at most once.
|
|
||||||
+ //
|
|
||||||
+ // Explanation:
|
|
||||||
+ // Only when fegetround() == FE_TONEAREST do we have that
|
|
||||||
+ // fmin + 1.0f == 1.0f - fmin.
|
|
||||||
+ //
|
|
||||||
+ // FE_UPWARD:
|
|
||||||
+ // fmin + 1.0f > 1
|
|
||||||
+ // 1.0f - fmin == 1
|
|
||||||
+ //
|
|
||||||
+ // FE_DOWNWARD or FE_TOWARDZERO:
|
|
||||||
+ // fmin + 1.0f == 1
|
|
||||||
+ // 1.0f - fmin < 1
|
|
||||||
+ //
|
|
||||||
+ // Note: This may fail to be accurate if fast-math has been
|
|
||||||
+ // enabled, as rounding conventions may not apply.
|
|
||||||
+ return (fmini + 1.0f == 1.0f - fmini);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
} // namespace detail
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
@@ -2870,7 +2912,7 @@ from_chars_result from_chars_advanced(co
|
|
||||||
answer.ec = std::errc(); // be optimistic
|
|
||||||
answer.ptr = pns.lastmatch;
|
|
||||||
// Next is Clinger's fast path.
|
|
||||||
- if (binary_format<T>::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format<T>::max_exponent_fast_path() && pns.mantissa <=binary_format<T>::max_mantissa_fast_path() && !pns.too_many_digits) {
|
|
||||||
+ if (binary_format<T>::min_exponent_fast_path() <= pns.exponent && pns.exponent <= binary_format<T>::max_exponent_fast_path() && pns.mantissa <=binary_format<T>::max_mantissa_fast_path() && !pns.too_many_digits && detail::rounds_to_nearest()) {
|
|
||||||
value = T(pns.mantissa);
|
|
||||||
if (pns.exponent < 0) { value = value / binary_format<T>::exact_power_of_ten(-pns.exponent); }
|
|
||||||
else { value = value * binary_format<T>::exact_power_of_ten(pns.exponent); }
|
|
||||||
--- libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc.jj
|
|
||||||
+++ libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc
|
|
||||||
@@ -0,0 +1,42 @@
|
|
||||||
+// Copyright (C) 2022 Free Software Foundation, Inc.
|
|
||||||
+//
|
|
||||||
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
||||||
+// software; you can redistribute it and/or modify it under the
|
|
||||||
+// terms of the GNU General Public License as published by the
|
|
||||||
+// Free Software Foundation; either version 3, or (at your option)
|
|
||||||
+// any later version.
|
|
||||||
+
|
|
||||||
+// This library is distributed in the hope that it will be useful,
|
|
||||||
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+// GNU General Public License for more details.
|
|
||||||
+
|
|
||||||
+// You should have received a copy of the GNU General Public License along
|
|
||||||
+// with this library; see the file COPYING3. If not see
|
|
||||||
+// <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+// { dg-do run { target c++17 } }
|
|
||||||
+// { dg-add-options ieee }
|
|
||||||
+
|
|
||||||
+#include <charconv>
|
|
||||||
+#include <string>
|
|
||||||
+#include <cfenv>
|
|
||||||
+#include <testsuite_hooks.h>
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main()
|
|
||||||
+{
|
|
||||||
+ // FP from_char not available otherwise.
|
|
||||||
+#if __cpp_lib_to_chars >= 201611L \
|
|
||||||
+ && _GLIBCXX_USE_C99_FENV_TR1 \
|
|
||||||
+ && defined(FE_DOWNWARD) \
|
|
||||||
+ && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
|
|
||||||
+ // PR libstdc++/107468
|
|
||||||
+ float f;
|
|
||||||
+ char buf[] = "3.355447e+07";
|
|
||||||
+ std::fesetround(FE_DOWNWARD);
|
|
||||||
+ auto [ptr, ec] = std::from_chars(buf, buf + sizeof(buf) - 1, f, std::chars_format::scientific);
|
|
||||||
+ VERIFY( ec == std::errc() && ptr == buf + sizeof(buf) - 1 );
|
|
||||||
+ VERIFY( f == 33554472.0f );
|
|
||||||
+#endif
|
|
||||||
+}
|
|
@ -32,27 +32,31 @@
|
|||||||
fi
|
fi
|
||||||
--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100
|
--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100
|
||||||
+++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100
|
+++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100
|
||||||
@@ -447,8 +447,8 @@ LDFLAGS = @LDFLAGS@
|
@@ -446,9 +446,9 @@ LDFLAGS = @LDFLAGS@
|
||||||
LIBCFLAGS = $(CFLAGS)
|
LIBCFLAGS = $(CFLAGS)
|
||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||||
-GOCFLAGS = $(CFLAGS)
|
-GOCFLAGS = $(CFLAGS)
|
||||||
-GDCFLAGS = $(CFLAGS)
|
-GDCFLAGS = $(CFLAGS)
|
||||||
|
-GM2FLAGS = $(CFLAGS)
|
||||||
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
+GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
|
||||||
# Pass additional PGO and LTO compiler options to the PGO build.
|
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||||
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
||||||
--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100
|
--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100
|
||||||
+++ Makefile.in 2022-01-07 12:06:27.335334561 +0100
|
+++ Makefile.in 2022-01-07 12:06:27.335334561 +0100
|
||||||
@@ -444,8 +444,8 @@ LDFLAGS = @LDFLAGS@
|
@@ -443,9 +443,9 @@ LDFLAGS = @LDFLAGS@
|
||||||
LIBCFLAGS = $(CFLAGS)
|
LIBCFLAGS = $(CFLAGS)
|
||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
|
||||||
-GOCFLAGS = $(CFLAGS)
|
-GOCFLAGS = $(CFLAGS)
|
||||||
-GDCFLAGS = $(CFLAGS)
|
-GDCFLAGS = $(CFLAGS)
|
||||||
|
-GM2FLAGS = $(CFLAGS)
|
||||||
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
+GM2FLAGS = $(filter-out -Wformat-security,$(CFLAGS))
|
||||||
|
|
||||||
# Pass additional PGO and LTO compiler options to the PGO build.
|
# Pass additional PGO and LTO compiler options to the PGO build.
|
||||||
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
|
@ -629,7 +629,7 @@
|
|||||||
--- gcc/graphite.cc.jj 2015-11-04 14:15:32.000000000 +0100
|
--- gcc/graphite.cc.jj 2015-11-04 14:15:32.000000000 +0100
|
||||||
+++ gcc/graphite.cc 2015-11-04 14:56:02.645536409 +0100
|
+++ gcc/graphite.cc 2015-11-04 14:56:02.645536409 +0100
|
||||||
@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
|
@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
|
||||||
#include "tree-into-ssa.h"
|
#include "tree-ssa-propagate.h"
|
||||||
#include "graphite.h"
|
#include "graphite.h"
|
||||||
|
|
||||||
+__typeof (isl_pointers__) isl_pointers__;
|
+__typeof (isl_pointers__) isl_pointers__;
|
||||||
@ -664,7 +664,7 @@
|
|||||||
/* Print global statistics to FILE. */
|
/* Print global statistics to FILE. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -365,6 +394,15 @@ graphite_transform_loops (void)
|
@@ -424,6 +453,15 @@ graphite_transform_loops (void)
|
||||||
if (parallelized_function_p (cfun->decl))
|
if (parallelized_function_p (cfun->decl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -680,7 +680,7 @@
|
|||||||
calculate_dominance_info (CDI_DOMINATORS);
|
calculate_dominance_info (CDI_DOMINATORS);
|
||||||
|
|
||||||
/* We rely on post-dominators during merging of SESE regions so those
|
/* We rely on post-dominators during merging of SESE regions so those
|
||||||
@@ -455,6 +493,14 @@ graphite_transform_loops (void)
|
@@ -519,6 +557,14 @@ graphite_transform_loops (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
47
gcc13-pr107608.patch
Normal file
47
gcc13-pr107608.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
2023-01-15 Aldy Hernandez <aldyh@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/107608
|
||||||
|
* range-op-float.cc (range_operator_float::fold_range): Avoid
|
||||||
|
folding into INF when flag_trapping_math.
|
||||||
|
* value-range.h (frange::known_isinf): Return false for possible NANs.
|
||||||
|
|
||||||
|
--- gcc/range-op-float.cc
|
||||||
|
+++ gcc/range-op-float.cc
|
||||||
|
@@ -91,6 +91,27 @@ range_operator_float::fold_range (frange &r, tree type,
|
||||||
|
else
|
||||||
|
r.clear_nan ();
|
||||||
|
|
||||||
|
+ // If the result has overflowed and flag_trapping_math, folding this
|
||||||
|
+ // operation could elide an overflow or division by zero exception.
|
||||||
|
+ // Avoid returning a singleton +-INF, to keep the propagators (DOM
|
||||||
|
+ // and substitute_and_fold_engine) from folding. See PR107608.
|
||||||
|
+ if (flag_trapping_math
|
||||||
|
+ && MODE_HAS_INFINITIES (TYPE_MODE (type))
|
||||||
|
+ && r.known_isinf () && !op1.known_isinf () && !op2.known_isinf ())
|
||||||
|
+ {
|
||||||
|
+ REAL_VALUE_TYPE inf = r.lower_bound ();
|
||||||
|
+ if (real_isneg (&inf))
|
||||||
|
+ {
|
||||||
|
+ REAL_VALUE_TYPE min = real_min_representable (type);
|
||||||
|
+ r.set (type, inf, min);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ REAL_VALUE_TYPE max = real_max_representable (type);
|
||||||
|
+ r.set (type, max, inf);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- gcc/value-range.h
|
||||||
|
+++ gcc/value-range.h
|
||||||
|
@@ -1300,6 +1300,7 @@ inline bool
|
||||||
|
frange::known_isinf () const
|
||||||
|
{
|
||||||
|
return (m_kind == VR_RANGE
|
||||||
|
+ && !maybe_isnan ()
|
||||||
|
&& real_identical (&m_min, &m_max)
|
||||||
|
&& real_isinf (&m_min));
|
||||||
|
}
|
113
gcc13-pr107678.patch
Normal file
113
gcc13-pr107678.patch
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
A recent change only initializes the regs.how[] during Dwarf unwinding
|
||||||
|
which resulted in an uninitialized offset used in return address signing
|
||||||
|
and random failures during unwinding. The fix is to encode the return
|
||||||
|
address signing state in REG_UNSAVED and REG_UNDEFINED.
|
||||||
|
|
||||||
|
2023-01-10 Wilco Dijkstra <Wilco.Dijkstra@arm.com>
|
||||||
|
|
||||||
|
PR target/107678
|
||||||
|
* unwind-dw2.c (RA_SIGNED_BIT): Remove.
|
||||||
|
* unwind-dw2-execute_cfa.h: Use REG_UNSAVED/UNDEFINED
|
||||||
|
to encode return address signing state.
|
||||||
|
* config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr)
|
||||||
|
Check current return address signing state.
|
||||||
|
(aarch64_frob_update_contex): Remove.
|
||||||
|
|
||||||
|
--- libgcc/config/aarch64/aarch64-unwind.h
|
||||||
|
+++ libgcc/config/aarch64/aarch64-unwind.h
|
||||||
|
@@ -29,8 +29,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
|
||||||
|
#define MD_DEMANGLE_RETURN_ADDR(context, fs, addr) \
|
||||||
|
aarch64_demangle_return_addr (context, fs, addr)
|
||||||
|
-#define MD_FROB_UPDATE_CONTEXT(context, fs) \
|
||||||
|
- aarch64_frob_update_context (context, fs)
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
aarch64_cie_signed_with_b_key (struct _Unwind_Context *context)
|
||||||
|
@@ -55,42 +53,27 @@ aarch64_cie_signed_with_b_key (struct _Unwind_Context *context)
|
||||||
|
|
||||||
|
static inline void *
|
||||||
|
aarch64_demangle_return_addr (struct _Unwind_Context *context,
|
||||||
|
- _Unwind_FrameState *fs ATTRIBUTE_UNUSED,
|
||||||
|
+ _Unwind_FrameState *fs,
|
||||||
|
_Unwind_Word addr_word)
|
||||||
|
{
|
||||||
|
void *addr = (void *)addr_word;
|
||||||
|
- if (context->flags & RA_SIGNED_BIT)
|
||||||
|
+ const int reg = DWARF_REGNUM_AARCH64_RA_STATE;
|
||||||
|
+
|
||||||
|
+ if (fs->regs.how[reg] == REG_UNSAVED)
|
||||||
|
+ return addr;
|
||||||
|
+
|
||||||
|
+ /* Return-address signing state is toggled by DW_CFA_GNU_window_save (where
|
||||||
|
+ REG_UNDEFINED means enabled), or set by a DW_CFA_expression. */
|
||||||
|
+ if (fs->regs.how[reg] == REG_UNDEFINED
|
||||||
|
+ || (_Unwind_GetGR (context, reg) & 0x1) != 0)
|
||||||
|
{
|
||||||
|
_Unwind_Word salt = (_Unwind_Word) context->cfa;
|
||||||
|
if (aarch64_cie_signed_with_b_key (context) != 0)
|
||||||
|
return __builtin_aarch64_autib1716 (addr, salt);
|
||||||
|
return __builtin_aarch64_autia1716 (addr, salt);
|
||||||
|
}
|
||||||
|
- else
|
||||||
|
- return addr;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-/* Do AArch64 private initialization on CONTEXT based on frame info FS. Mark
|
||||||
|
- CONTEXT as return address signed if bit 0 of DWARF_REGNUM_AARCH64_RA_STATE is
|
||||||
|
- set. */
|
||||||
|
-
|
||||||
|
-static inline void
|
||||||
|
-aarch64_frob_update_context (struct _Unwind_Context *context,
|
||||||
|
- _Unwind_FrameState *fs)
|
||||||
|
-{
|
||||||
|
- const int reg = DWARF_REGNUM_AARCH64_RA_STATE;
|
||||||
|
- int ra_signed;
|
||||||
|
- if (fs->regs.how[reg] == REG_UNSAVED)
|
||||||
|
- ra_signed = fs->regs.reg[reg].loc.offset & 0x1;
|
||||||
|
- else
|
||||||
|
- ra_signed = _Unwind_GetGR (context, reg) & 0x1;
|
||||||
|
- if (ra_signed)
|
||||||
|
- /* The flag is used for re-authenticating EH handler's address. */
|
||||||
|
- context->flags |= RA_SIGNED_BIT;
|
||||||
|
- else
|
||||||
|
- context->flags &= ~RA_SIGNED_BIT;
|
||||||
|
|
||||||
|
- return;
|
||||||
|
+ return addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* defined AARCH64_UNWIND_H && defined __ILP32__ */
|
||||||
|
--- libgcc/unwind-dw2.c
|
||||||
|
+++ libgcc/unwind-dw2.c
|
||||||
|
@@ -137,9 +137,6 @@ struct _Unwind_Context
|
||||||
|
#define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1)
|
||||||
|
/* Context which has version/args_size/by_value fields. */
|
||||||
|
#define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1)
|
||||||
|
- /* Bit reserved on AArch64, return address has been signed with A or B
|
||||||
|
- key. */
|
||||||
|
-#define RA_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1)
|
||||||
|
_Unwind_Word flags;
|
||||||
|
/* 0 for now, can be increased when further fields are added to
|
||||||
|
struct _Unwind_Context. */
|
||||||
|
--- libgcc/unwind-dw2-execute_cfa.h 2023-01-02 17:53:56.003021412 +0100
|
||||||
|
+++ libgcc/unwind-dw2-execute_cfa.h 2023-01-12 19:52:05.456327742 +0100
|
||||||
|
@@ -278,10 +278,15 @@
|
||||||
|
case DW_CFA_GNU_window_save:
|
||||||
|
#if defined (__aarch64__) && !defined (__ILP32__)
|
||||||
|
/* This CFA is multiplexed with Sparc. On AArch64 it's used to toggle
|
||||||
|
- return address signing status. */
|
||||||
|
+ return address signing status. The REG_UNDEFINED/UNSAVED states
|
||||||
|
+ mean RA signing is enabled/disabled. */
|
||||||
|
reg = DWARF_REGNUM_AARCH64_RA_STATE;
|
||||||
|
- gcc_assert (fs->regs.how[reg] == REG_UNSAVED);
|
||||||
|
- fs->regs.reg[reg].loc.offset ^= 1;
|
||||||
|
+ gcc_assert (fs->regs.how[reg] == REG_UNSAVED
|
||||||
|
+ || fs->regs.how[reg] == REG_UNDEFINED);
|
||||||
|
+ if (fs->regs.how[reg] == REG_UNSAVED)
|
||||||
|
+ fs->regs.how[reg] = REG_UNDEFINED;
|
||||||
|
+ else
|
||||||
|
+ fs->regs.how[reg] = REG_UNSAVED;
|
||||||
|
#else
|
||||||
|
/* ??? Hardcoded for SPARC register window configuration. */
|
||||||
|
if (__LIBGCC_DWARF_FRAME_REGISTERS__ >= 32)
|
14
gcc13-pr108411.patch
Normal file
14
gcc13-pr108411.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
PR108411 workaround
|
||||||
|
|
||||||
|
--- gcc/config/aarch64/aarch64.cc 2023-01-15 13:20:00.569241815 +0100
|
||||||
|
+++ gcc/config/aarch64/aarch64.cc 2023-01-15 13:30:05.061513817 +0100
|
||||||
|
@@ -7707,8 +7707,7 @@ aarch64_layout_arg (cumulative_args_t pc
|
||||||
|
unsigned int alignment
|
||||||
|
= aarch64_function_arg_alignment (mode, type, &abi_break,
|
||||||
|
&abi_break_packed);
|
||||||
|
- gcc_assert (alignment <= 16 * BITS_PER_UNIT
|
||||||
|
- && (!alignment || abi_break < alignment)
|
||||||
|
+ gcc_assert ((!alignment || abi_break < alignment)
|
||||||
|
&& (!abi_break_packed || alignment < abi_break_packed));
|
||||||
|
|
||||||
|
pcum->aapcs_arg_processed = true;
|
@ -1,21 +1,21 @@
|
|||||||
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
||||||
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
||||||
@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
|
@@ -3330,7 +3330,7 @@ sparc-*-rtems*)
|
||||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
tm_file="${tm_file} elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
||||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
|
||||||
;;
|
;;
|
||||||
-sparc-*-linux*)
|
-sparc-*-linux*)
|
||||||
+sparc-*-linux* | sparcv9-*-linux*)
|
+sparc-*-linux* | sparcv9-*-linux*)
|
||||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
tm_file="${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
|
||||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
case ${target} in
|
case ${target} in
|
||||||
@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
|
@@ -3384,7 +3384,7 @@ sparc64-*-rtems*)
|
||||||
extra_options="${extra_options}"
|
extra_options="${extra_options}"
|
||||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
|
||||||
;;
|
;;
|
||||||
-sparc64-*-linux*)
|
-sparc64-*-linux*)
|
||||||
+sparc64*-*-linux*)
|
+sparc64*-*-linux*)
|
||||||
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
|
tm_file="sparc/biarch64.h ${tm_file} elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
|
||||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
|
||||||
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
85
isl-rh2155127.patch
Normal file
85
isl-rh2155127.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From: Sven Verdoolaege <sven.verdoolaege@gmail.com>
|
||||||
|
Date: Mon, 6 Jun 2022 12:56:02 +0000 (+0200)
|
||||||
|
Subject: update m4/ax_prog_cc_for_build.m4
|
||||||
|
X-Git-Tag: isl-0.25~11
|
||||||
|
X-Git-Url: https://repo.or.cz/isl.git/commitdiff_plain/b4dcdfadc29a6c9f410a72f345f3f32725b1d38b
|
||||||
|
|
||||||
|
update m4/ax_prog_cc_for_build.m4
|
||||||
|
|
||||||
|
In particular, update to the latest version from the autoconf archive,
|
||||||
|
but preserve the changes from isl-0.22.1-358-gcd42abdf2
|
||||||
|
(m4/ax_prog_cc_for_build.m4: do not override host compiler dependency style,
|
||||||
|
Tue Jun 9 10:54:10 2020 +0200).
|
||||||
|
|
||||||
|
Signed-off-by: Sven Verdoolaege <sven.verdoolaege@gmail.com>
|
||||||
|
|
||||||
|
--- isl-0.24/m4/ax_prog_cc_for_build.m4.jj 2021-03-02 12:07:09.000000000 +0100
|
||||||
|
+++ isl-0.24/m4/ax_prog_cc_for_build.m4 2022-12-20 18:11:18.855777817 +0100
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
-#serial 18
|
||||||
|
+#serial 21
|
||||||
|
|
||||||
|
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
|
||||||
|
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
|
||||||
|
@@ -44,6 +44,8 @@ dnl Use the standard macros, but make th
|
||||||
|
dnl
|
||||||
|
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
|
||||||
|
pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
|
||||||
|
+pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl
|
||||||
|
+pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl
|
||||||
|
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
|
||||||
|
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
|
||||||
|
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
|
||||||
|
@@ -86,7 +88,21 @@ AS_IF([test -n "$build"], [ac_build
|
||||||
|
[test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
|
||||||
|
|
||||||
|
AC_LANG_PUSH([C])
|
||||||
|
+
|
||||||
|
+dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover
|
||||||
|
+dnl the use of this variable in _AC_LANG_COMPILER_GNU called by
|
||||||
|
+dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround.
|
||||||
|
+was_set_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y}
|
||||||
|
+AS_IF([test ${was_set_c_compiler_gnu}],
|
||||||
|
+ [saved_c_compiler_gnu=$[ac_cv_c_compiler_gnu]
|
||||||
|
+ AS_UNSET([[ac_cv_c_compiler_gnu]])])
|
||||||
|
+
|
||||||
|
AC_PROG_CC
|
||||||
|
+
|
||||||
|
+dnl Restore ac_cv_c_compiler_gnu
|
||||||
|
+AS_IF([test ${was_set_c_compiler_gnu}],
|
||||||
|
+ [[ac_cv_c_compiler_gnu]=$[saved_c_compiler_gnu]])
|
||||||
|
+
|
||||||
|
_AC_COMPILER_EXEEXT
|
||||||
|
_AC_COMPILER_OBJEXT
|
||||||
|
AC_PROG_CPP
|
||||||
|
--- isl-0.24/configure.jj 2021-04-26 11:13:19.000000000 +0200
|
||||||
|
+++ isl-0.24/configure 2022-12-20 18:11:36.882518568 +0100
|
||||||
|
@@ -5002,6 +4990,13 @@ ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR
|
||||||
|
ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
|
||||||
|
ac_compiler_gnu=$ac_cv_build_c_compiler_gnu
|
||||||
|
|
||||||
|
+
|
||||||
|
+was_set_c_compiler_gnu=${ac_cv_c_compiler_gnu+y}
|
||||||
|
+if test ${was_set_c_compiler_gnu}; then :
|
||||||
|
+ saved_c_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
+ { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;}
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
ac_ext=c
|
||||||
|
ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
|
||||||
|
ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
|
||||||
|
@@ -5728,6 +5723,11 @@ else
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
+
|
||||||
|
+if test ${was_set_c_compiler_gnu}; then :
|
||||||
|
+ ac_cv_c_compiler_gnu=$saved_c_compiler_gnu
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
2
sources
2
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (gcc-12.2.1-20221121.tar.xz) = 6fef1438e77d8b7e7aeddea6d2d6a82c37d2e93f65ad9007f04206e1a368dd70597cef01188de4ee9bbfe1811a129303ce10b49cb9758a2b44abe4f0312d073a
|
SHA512 (gcc-13.0.0-20230115.tar.xz) = f347e7b91a078e37842612be601f28c68249e4300ee122fbcee8a0a8c15171d51507a4913640135cca07e47f979163acdfd1a4b7cd06a21966663986aee95a29
|
||||||
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
|
||||||
SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec
|
SHA512 (newlib-cygwin-a8526cb52bedabd4d6ba4b227a5185627f871aa1.tar.xz) = b099246fe4a5d0a372cdaee5da49083df5b2f4440a4e83961600cdf22d37da50c99ce9ae46b769f188a67034ee038cf863260988fc9d594e8e5fb3905a381dec
|
||||||
SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6
|
SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
||||||
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
|
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
|
||||||
d=`date --iso | sed 's/-//g'`
|
d=`date --iso | sed 's/-//g'`
|
||||||
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-12.2.1-$d/ $1 | xz -9e > gcc-12.2.1-$d.tar.xz
|
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.0.0-$d/ $1 | xz -9e > gcc-13.0.0-$d.tar.xz
|
||||||
rm -rf gcc-dir.tmp
|
rm -rf gcc-dir.tmp
|
||||||
|
Loading…
Reference in New Issue
Block a user