aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorManfred Hollstein <manfred@gcc.gnu.org>1998-03-19 00:01:20 +0000
committerManfred Hollstein <manfred@gcc.gnu.org>1998-03-19 00:01:20 +0000
commit22bf44225f9fae2135aa57a03167f513f8e745ba (patch)
treef0f8a8d33e4a552b7ff922b2ffab91daf10cac9a /gcc/final.c
parentaf7da1998dad45df5494051a3ea59aa6b6b850ea (diff)
downloadgcc-22bf44225f9fae2135aa57a03167f513f8e745ba.zip
gcc-22bf44225f9fae2135aa57a03167f513f8e745ba.tar.gz
gcc-22bf44225f9fae2135aa57a03167f513f8e745ba.tar.bz2
final.c (insn_noperands): Change type to unsigned int.
P * final.c (insn_noperands): Change type to unsigned int. (final_scan_insn): Likewise for noperands; properly check operand number boundaries. From-SVN: r18693
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 70a6fbe..aeb7677 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -161,7 +161,7 @@ extern int length_unit_log; /* This is defined in insn-attrtab.c. */
static rtx this_is_asm_operands;
/* Number of operands of this insn, for an `asm' with operands. */
-static int insn_noperands;
+static unsigned int insn_noperands;
/* Compare optimization flag. */
@@ -2366,7 +2366,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
/* Detect `asm' construct with operands. */
if (asm_noperands (body) >= 0)
{
- int noperands = asm_noperands (body);
+ unsigned int noperands = asm_noperands (body);
rtx *ops = (rtx *) alloca (noperands * sizeof (rtx));
char *string;
@@ -3255,7 +3255,7 @@ output_asm_insn (template, operands)
if (! (*p >= '0' && *p <= '9'))
output_operand_lossage ("operand number missing after %-letter");
- else if (this_is_asm_operands && c >= insn_noperands)
+ else if (this_is_asm_operands && (c < 0 || (unsigned int) c >= insn_noperands))
output_operand_lossage ("operand number out of range");
else if (letter == 'l')
output_asm_label (operands[c]);
@@ -3288,7 +3288,7 @@ output_asm_insn (template, operands)
else if (*p >= '0' && *p <= '9')
{
c = atoi (p);
- if (this_is_asm_operands && c >= insn_noperands)
+ if (this_is_asm_operands && (c < 0 || (unsigned int) c >= insn_noperands))
output_operand_lossage ("operand number out of range");
else
output_operand (operands[c], 0);