> On 5 Jul 2024, at 09:34, Iain Sandoe <iains....@gmail.com> wrote:
> 
> This is Darwin-local, and I would like to apply it today to restore
> bootstrap before my weekend test-runs,

tested on x86_64-linux (m32/m64) x86_64-darwin17 (m32/m64)
i686-darwin17 (m32/m64) i686-darwin9 (m32/m64) x86_64-darwin21 (m64)
pushed to trunk to restore bootstrap on the affected targets,
thanks
Iain

> but would welcome any comments
> or suggestions.
> 
> thanks
> Iain
> 
> --- 8< ---
> 
> r15-1735-ge62ea4fb8ffcab06ddd  contained changes that altered the
> codegen for 32b Darwin (whether hosted on 64b or as 32b host) such
> that the per function picbase load is called multiple times in some
> cases.  Darwin's back end is not expecting this (and indeed some of
> the handling depends on a single instance).
> 
> The fixes the issue by marking those instructions as not copyable
> (as suggested by Andrew Pinski).
> 
> The change is Darwin-specific.
> 
> gcc/ChangeLog:
> 
>       * config/i386/i386.cc (ix86_cannot_copy_insn_p): New.
>       (TARGET_CANNOT_COPY_INSN_P): New.
> 
> Signed-off-by: Iain Sandoe <ia...@gcc.gnu.org>
> ---
> gcc/config/i386/i386.cc | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
> 
> diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
> index 99def8d4a77..f75250f79de 100644
> --- a/gcc/config/i386/i386.cc
> +++ b/gcc/config/i386/i386.cc
> @@ -27025,6 +27025,29 @@ ix86_libm_function_max_error (unsigned cfn, 
> machine_mode mode,
> #undef TARGET_LIBM_FUNCTION_MAX_ERROR
> #define TARGET_LIBM_FUNCTION_MAX_ERROR ix86_libm_function_max_error
> 
> +#if TARGET_MACHO
> +static bool
> +ix86_cannot_copy_insn_p (rtx_insn *insn)
> +{
> +  if (TARGET_64BIT)
> +    return false;
> +
> +  rtx set = single_set (insn);
> +  if (set)
> +    {
> +      rtx src = SET_SRC (set);
> +      if (GET_CODE (src) == UNSPEC
> +       && XINT (src, 1) == UNSPEC_SET_GOT)
> +     return true;
> +    }
> +  return false;
> +}
> +
> +#undef TARGET_CANNOT_COPY_INSN_P
> +#define TARGET_CANNOT_COPY_INSN_P ix86_cannot_copy_insn_p
> +
> +#endif
> +
> #if CHECKING_P
> #undef TARGET_RUN_TARGET_SELFTESTS
> #define TARGET_RUN_TARGET_SELFTESTS selftest::ix86_run_selftests
> -- 
> 2.39.2 (Apple Git-143)
> 

Reply via email to