[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