1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-27 09:33:42 +00:00

Fixed internal compiler error on invalid input code.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3768 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2007-02-03 18:11:37 +00:00
parent b8293aaf8a
commit 9601baf6ec

View File

@ -1894,7 +1894,7 @@ static void parseadd (ExprDesc* Expr)
Error ("Invalid operands for binary operator `+'"); Error ("Invalid operands for binary operator `+'");
} }
} else { } else {
/* lhs is a constant and rhs is not constant. Load rhs into /* lhs is a constant and rhs is not constant. Load rhs into
* the primary. * the primary.
@ -1974,6 +1974,7 @@ static void parseadd (ExprDesc* Expr)
} else { } else {
/* OOPS */ /* OOPS */
Error ("Invalid operands for binary operator `+'"); Error ("Invalid operands for binary operator `+'");
flags = CF_INT;
} }
/* Result is a rvalue in primary register */ /* Result is a rvalue in primary register */
@ -2014,6 +2015,7 @@ static void parseadd (ExprDesc* Expr)
} else { } else {
/* OOPS */ /* OOPS */
Error ("Invalid operands for binary operator `+'"); Error ("Invalid operands for binary operator `+'");
flags = CF_INT;
} }
/* Generate code for the add */ /* Generate code for the add */
@ -2052,6 +2054,7 @@ static void parseadd (ExprDesc* Expr)
} else { } else {
/* OOPS */ /* OOPS */
Error ("Invalid operands for binary operator `+'"); Error ("Invalid operands for binary operator `+'");
flags = CF_INT;
} }
/* Generate code for the add */ /* Generate code for the add */
@ -2077,12 +2080,12 @@ static void parsesub (ExprDesc* Expr)
*/ */
{ {
ExprDesc Expr2; ExprDesc Expr2;
unsigned flags; /* Operation flags */ unsigned flags; /* Operation flags */
Type* lhst; /* Type of left hand side */ Type* lhst; /* Type of left hand side */
Type* rhst; /* Type of right hand side */ Type* rhst; /* Type of right hand side */
CodeMark Mark1; /* Save position of output queue */ CodeMark Mark1; /* Save position of output queue */
CodeMark Mark2; /* Another position in the queue */ CodeMark Mark2; /* Another position in the queue */
int rscale; /* Scale factor for the result */ int rscale; /* Scale factor for the result */
/* Skip the MINUS token */ /* Skip the MINUS token */
@ -2090,7 +2093,6 @@ static void parsesub (ExprDesc* Expr)
/* Get the left hand side type, initialize operation flags */ /* Get the left hand side type, initialize operation flags */
lhst = Expr->Type; lhst = Expr->Type;
flags = 0;
rscale = 1; /* Scale by 1, that is, don't scale */ rscale = 1; /* Scale by 1, that is, don't scale */
/* Remember the output queue position, then bring the value onto the stack */ /* Remember the output queue position, then bring the value onto the stack */
@ -2166,6 +2168,7 @@ static void parsesub (ExprDesc* Expr)
} else { } else {
/* OOPS */ /* OOPS */
Error ("Invalid operands for binary operator `-'"); Error ("Invalid operands for binary operator `-'");
flags = CF_INT;
} }
/* Do the subtraction */ /* Do the subtraction */
@ -2216,6 +2219,7 @@ static void parsesub (ExprDesc* Expr)
} else { } else {
/* OOPS */ /* OOPS */
Error ("Invalid operands for binary operator `-'"); Error ("Invalid operands for binary operator `-'");
flags = CF_INT;
} }
/* Generate code for the sub (the & is a hack here) */ /* Generate code for the sub (the & is a hack here) */