summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-mips.c7
2 files changed, 9 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 052c9541ff9..fece8b59412 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,9 @@
2020-09-02 Alan Modra <amodra@gmail.com>
+ * config/tc-mips.c (load_register): Avoid too large shift.
+
+2020-09-02 Alan Modra <amodra@gmail.com>
+
* config/tc-d30v.c (parallel_ok): Use 1UL for left shift expression.
2020-09-02 Alan Modra <amodra@gmail.com>
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 7d0d5a19918..81e2370eee6 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -9603,8 +9603,11 @@ load_register (int reg, expressionS *ep, int dbl)
lo >>= 1;
++bit;
}
- lo |= (hi & (((unsigned long) 1 << bit) - 1)) << (32 - bit);
- hi >>= bit;
+ if (bit != 0)
+ {
+ lo |= (hi & ((2UL << (bit - 1)) - 1)) << (32 - bit);
+ hi >>= bit;
+ }
}
else
{