aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYunQiang Su <yunqiang.su@cipunited.com>2023-03-23 18:49:23 +0800
committerYunQiang Su <yunqiang.su@cipunited.com>2023-04-23 14:50:18 +0800
commitaf989297316ec7628f1ddffc621932805a464b1d (patch)
treee7f253ed61a3f2d6cd12f5b82176d9ed9c753be7
parent9171de358f230b64646bbb525a74e5f8e3dbe0dc (diff)
downloadgdb-af989297316ec7628f1ddffc621932805a464b1d.zip
gdb-af989297316ec7628f1ddffc621932805a464b1d.tar.gz
gdb-af989297316ec7628f1ddffc621932805a464b1d.tar.bz2
MIPS: fix loongson3 llsc workaround
-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.
-rw-r--r--gas/config/tc-mips.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index e911aaa..8a970ce 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;
}