[PATCH] MIPS: fix loongson3 llsc workaround

YunQiang Su syq@debian.org
Mon Apr 10 06:37:19 GMT 2023


ping

YunQiang Su <yunqiang.su@cipunited.com> 于2023年3月23日周四 19:00写道:
>
> -mfix-looongson3-llsc may add sync instructions not needed on some
> asm code with lots of debug info.
>
>         PR: 30153
>         * gas/config/tc-mips.c(fix_loongson3_llsc): clear logistic.
> ---
>  gas/config/tc-mips.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
> index e911aaa904a..8a970ceada2 100644
> --- a/gas/config/tc-mips.c
> +++ b/gas/config/tc-mips.c
> @@ -6942,10 +6942,6 @@ fix_loongson3_llsc (struct mips_cl_insn * ip)
>        unsigned long lookback = ARRAY_SIZE (history);
>        for (i = 0; i < lookback; i++)
>         {
> -         if (streq (history[i].insn_mo->name, "ll")
> -             || streq (history[i].insn_mo->name, "lld"))
> -           break;
> -
>           if (streq (history[i].insn_mo->name, "sc")
>               || streq (history[i].insn_mo->name, "scd"))
>             {
> @@ -6953,8 +6949,8 @@ fix_loongson3_llsc (struct mips_cl_insn * ip)
>
>               for (j = i + 1; j < lookback; j++)
>                 {
> -                 if (streq (history[i].insn_mo->name, "ll")
> -                     || streq (history[i].insn_mo->name, "lld"))
> +                 if (streq (history[j].insn_mo->name, "ll")
> +                     || streq (history[j].insn_mo->name, "lld"))
>                     break;
>
>                   if (delayed_branch_p (&history[j]))
> @@ -6993,7 +6989,7 @@ fix_loongson3_llsc (struct mips_cl_insn * ip)
>               for (j = i + 1; j < lookback; j++)
>                 {
>                   if (streq (history[j].insn_mo->name, "ll")
> -                     || streq (history[i].insn_mo->name, "lld"))
> +                     || streq (history[j].insn_mo->name, "lld"))
>                     break;
>                 }
>
> --
> 2.30.2
>


More information about the Binutils mailing list