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:
parent
b8293aaf8a
commit
9601baf6ec
@ -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) */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user