From 189caab5f3df270079bffd369a12f16f1eb29da4 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Thu, 9 Dec 2010 23:43:31 +0000 Subject: [PATCH] * config/tc-mips.c (macro) : Correct types used for pos and size. --- gas/ChangeLog | 5 +++++ gas/config/tc-mips.c | 29 ++++++++++++++++------------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index f87b622c6..e018505c4 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,10 @@ 2010-12-09 Maciej W. Rozycki + * config/tc-mips.c (macro) : Correct types used + for pos and size. + +2010-12-09 Maciej W. Rozycki + * config/tc-mips.c (macro) : Don't load a zero into an auxiliary register when using a signed 16-bit constant offset. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index eb1ba2e7e..045cf87de 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -5262,8 +5262,9 @@ macro (struct mips_cl_insn *ip) case M_DEXT: { - unsigned long pos; - unsigned long size; + /* Use unsigned arithmetic. */ + addressT pos; + addressT size; if (imm_expr.X_op != O_constant || imm2_expr.X_op != O_constant) { @@ -5272,19 +5273,19 @@ macro (struct mips_cl_insn *ip) } else { - pos = (unsigned long) imm_expr.X_add_number; - size = (unsigned long) imm2_expr.X_add_number; + pos = imm_expr.X_add_number; + size = imm2_expr.X_add_number; } if (pos > 63) { - as_bad (_("Improper position (%lu)"), pos); + as_bad (_("Improper position (%lu)"), (unsigned long) pos); pos = 1; } if (size == 0 || size > 64 || (pos + size - 1) > 63) { as_bad (_("Improper extract size (%lu, position %lu)"), - size, pos); + (unsigned long) size, (unsigned long) pos); size = 1; } @@ -5303,14 +5304,16 @@ macro (struct mips_cl_insn *ip) s = "dextm"; fmt = "t,r,+A,+G"; } - macro_build ((expressionS *) NULL, s, fmt, treg, sreg, pos, size - 1); + macro_build ((expressionS *) NULL, s, fmt, treg, sreg, (int) pos, + (int) (size - 1)); } break; case M_DINS: { - unsigned long pos; - unsigned long size; + /* Use unsigned arithmetic. */ + addressT pos; + addressT size; if (imm_expr.X_op != O_constant || imm2_expr.X_op != O_constant) { @@ -5319,19 +5322,19 @@ macro (struct mips_cl_insn *ip) } else { - pos = (unsigned long) imm_expr.X_add_number; - size = (unsigned long) imm2_expr.X_add_number; + pos = imm_expr.X_add_number; + size = imm2_expr.X_add_number; } if (pos > 63) { - as_bad (_("Improper position (%lu)"), pos); + as_bad (_("Improper position (%lu)"), (unsigned long) pos); pos = 1; } if (size == 0 || size > 64 || (pos + size - 1) > 63) { as_bad (_("Improper insert size (%lu, position %lu)"), - size, pos); + (unsigned long) size, (unsigned long) pos); size = 1; } -- 2.11.4.GIT