diff --git a/gap-aarch64.patch b/gap-aarch64.patch index e7217c2..3e16608 100644 --- a/gap-aarch64.patch +++ b/gap-aarch64.patch @@ -1,45 +1,11 @@ ---- src/funcs.c.orig 2020-02-29 02:02:10.000000000 -0700 -+++ src/funcs.c 2020-03-21 08:22:21.264432840 -0600 -@@ -53,8 +53,7 @@ extern inline struct FuncsModuleState *F +--- src/gasman.c.orig 2020-02-29 02:02:10.000000000 -0700 ++++ src/gasman.c 2020-03-30 10:15:52.004487823 -0600 +@@ -1780,7 +1780,7 @@ static void SparcStackFuncBags(void) + #endif - Int IncRecursionDepth(void) - { -- int depth = ++(FuncsState()->RecursionDepth); -- return depth; -+ return ++(FuncsState()->RecursionDepth); - } - - void DecRecursionDepth(void) ---- src/funcs.h.orig 2020-02-29 02:02:10.000000000 -0700 -+++ src/funcs.h 2020-03-21 08:15:52.136455354 -0600 -@@ -55,7 +55,7 @@ void RecursionDepthTrap(void); - EXPORT_INLINE void CheckRecursionBefore( void ) +-static void GenStackFuncBags(void) ++static NOINLINE void GenStackFuncBags(void) { -- Int depth = IncRecursionDepth(); -+ UInt depth = (UInt)IncRecursionDepth(); - if ( RecursionTrapInterval && - 0 == (depth % RecursionTrapInterval) ) - RecursionDepthTrap(); ---- src/hookintrprtr.h.orig 2020-02-29 02:02:10.000000000 -0700 -+++ src/hookintrprtr.h 2020-03-21 07:02:59.585429467 -0600 -@@ -128,7 +128,7 @@ void DeactivatePrintHooks(struct PrintHo - - #define GAP_HOOK_LOOP(member, ...) \ - do { \ -- Int i; \ -+ int i; \ - struct InterpreterHooks * hook; \ - for (i = 0; i < HookCount; ++i) { \ - hook = activeHooks[i]; \ ---- src/system.h.orig 2020-02-29 02:02:10.000000000 -0700 -+++ src/system.h 2020-03-23 16:33:30.583638125 -0600 -@@ -101,7 +101,7 @@ enum { - *T Wrappers for various compiler attributes - ** - */ --#if defined(HAVE_FUNC_ATTRIBUTE_ALWAYS_INLINE) && !defined(GAP_KERNEL_DEBUG) -+#if 0 - #define ALWAYS_INLINE __attribute__((always_inline)) inline - #else - #define ALWAYS_INLINE inline + Bag * top; /* top of stack */ + Bag * p; /* loop variable */ diff --git a/gap.spec b/gap.spec index e2b843c..d891c89 100644 --- a/gap.spec +++ b/gap.spec @@ -31,7 +31,7 @@ Name: gap Version: 4.11.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Computational discrete algebra %global majver %(cut -d. -f1-2 <<< %{version}) @@ -59,7 +59,7 @@ Patch2: %{name}-escape.patch Patch3: %{name}-ref.patch # Fix paths in gac Patch4: %{name}-gac.patch -# Work around a possible aarch64 gcc inlining bug +# Work around a problem with inlining that currently manifests only on aarch64 Patch5: %{name}-aarch64.patch BuildRequires: desktop-file-utils @@ -195,9 +195,7 @@ Headers and library links for libgap. %patch2 %patch3 %patch4 -%ifarch aarch64 %patch5 -%endif # Get the README cp -p %{SOURCE1} README.fedora @@ -207,11 +205,6 @@ cp -p %{SOURCE1} README.fedora export LDFLAGS="-Wl,-z,relro -Wl,--as-needed" export CPPFLAGS='-DSYS_DEFAULT_PATHS="\"%{gapdir}\""' export STRIP=%{_bindir}/true -%ifarch aarch64 -# Work around an apparent GCC inlining bug -export CFLAGS="%{optflags} -fno-inline" -export CXXFLAGS="%{optflags} -fno-inline" -%endif %configure # Get rid of undesirable hardcoded rpaths @@ -460,6 +453,9 @@ make check %{_libdir}/libgap.so %changelog +* Thu Apr 2 2020 Jerry James - 4.11.0-3 +- Reenable inlining on aarch64 on all but 1 function + * Mon Mar 23 2020 Jerry James - 4.11.0-2 - Turn off all inlining on aarch64 to work around possible GCC bug