1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-09 16:29:09 +00:00

Fixed register info for several runtime functions. Info for the Y register was

wrong, so the optimizer assumed it wouldn't change across a call.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4836 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2010-11-02 18:05:19 +00:00
parent 60e5c885e8
commit f1ce44edfe

View File

@ -232,18 +232,18 @@ static const FuncInfo FuncInfoTable[] = {
{ "tosadda0", REG_A, REG_AXY },
{ "tosaddax", REG_AX, REG_AXY },
{ "tosaddeax", REG_EAX, REG_EAXY | REG_TMP1 },
{ "tosand0ax", REG_AX, REG_EAX | REG_TMP1 },
{ "tosand0ax", REG_AX, REG_EAXY | REG_TMP1 },
{ "tosanda0", REG_A, REG_AXY },
{ "tosandax", REG_AX, REG_AXY },
{ "tosandeax", REG_EAX, REG_EAX | REG_TMP1 },
{ "tosandeax", REG_EAX, REG_EAXY | REG_TMP1 },
{ "tosaslax", REG_A, REG_AXY | REG_TMP1 },
{ "tosasleax", REG_A, REG_EAXY | REG_TMP1 },
{ "tosasrax", REG_A, REG_AXY | REG_TMP1 },
{ "tosasreax", REG_A, REG_EAXY | REG_TMP1 },
{ "tosdiv0ax", REG_AX, REG_ALL },
{ "tosdiva0", REG_A, REG_ALL },
{ "tosdivax", REG_AX, REG_ALL },
{ "tosdiveax", REG_EAX, REG_ALL },
{ "tosdiv0ax", REG_AX, REG_ALL },
{ "tosdiva0", REG_A, REG_ALL },
{ "tosdivax", REG_AX, REG_ALL },
{ "tosdiveax", REG_EAX, REG_ALL },
{ "toseq00", REG_NONE, REG_AXY | REG_SREG },
{ "toseqa0", REG_A, REG_AXY | REG_SREG },
{ "toseqax", REG_AX, REG_AXY | REG_SREG },
@ -256,7 +256,7 @@ static const FuncInfo FuncInfoTable[] = {
{ "tosgta0", REG_A, REG_AXY | REG_SREG },
{ "tosgtax", REG_AX, REG_AXY | REG_SREG },
{ "tosgteax", REG_EAX, REG_AXY | REG_PTR1 },
{ "tosicmp", REG_AX, REG_AXY | REG_SREG },
{ "tosicmp", REG_AX, REG_AXY | REG_SREG },
{ "tosicmp0", REG_A, REG_AXY | REG_SREG },
{ "toslcmp", REG_EAX, REG_A | REG_Y | REG_PTR1 },
{ "tosle00", REG_NONE, REG_AXY | REG_SREG },
@ -267,24 +267,24 @@ static const FuncInfo FuncInfoTable[] = {
{ "toslta0", REG_A, REG_AXY | REG_SREG },
{ "tosltax", REG_AX, REG_AXY | REG_SREG },
{ "toslteax", REG_EAX, REG_AXY | REG_PTR1 },
{ "tosmod0ax", REG_AX, REG_ALL },
{ "tosmodeax", REG_EAX, REG_ALL },
{ "tosmul0ax", REG_AX, REG_ALL },
{ "tosmula0", REG_A, REG_ALL },
{ "tosmulax", REG_AX, REG_ALL },
{ "tosmuleax", REG_EAX, REG_ALL },
{ "tosmod0ax", REG_AX, REG_ALL },
{ "tosmodeax", REG_EAX, REG_ALL },
{ "tosmul0ax", REG_AX, REG_ALL },
{ "tosmula0", REG_A, REG_ALL },
{ "tosmulax", REG_AX, REG_ALL },
{ "tosmuleax", REG_EAX, REG_ALL },
{ "tosne00", REG_NONE, REG_AXY | REG_SREG },
{ "tosnea0", REG_A, REG_AXY | REG_SREG },
{ "tosneax", REG_AX, REG_AXY | REG_SREG },
{ "tosneeax", REG_EAX, REG_AXY | REG_PTR1 },
{ "tosor0ax", REG_AX, REG_EAX | REG_TMP1 },
{ "tosor0ax", REG_AX, REG_EAXY | REG_TMP1 },
{ "tosora0", REG_A, REG_AXY | REG_TMP1 },
{ "tosorax", REG_AX, REG_AXY | REG_TMP1 },
{ "tosoreax", REG_EAX, REG_EAX | REG_TMP1 },
{ "tosrsub0ax", REG_AX, REG_EAX | REG_TMP1 },
{ "tosrsuba0", REG_A, REG_AX | REG_TMP1 },
{ "tosrsubax", REG_AX, REG_AX | REG_TMP1 },
{ "tosrsubeax", REG_EAX, REG_EAX | REG_TMP1 },
{ "tosoreax", REG_EAX, REG_EAXY | REG_TMP1 },
{ "tosrsub0ax", REG_AX, REG_EAXY | REG_TMP1 },
{ "tosrsuba0", REG_A, REG_AXY | REG_TMP1 },
{ "tosrsubax", REG_AX, REG_AXY | REG_TMP1 },
{ "tosrsubeax", REG_EAX, REG_EAXY | REG_TMP1 },
{ "tosshlax", REG_A, REG_AXY | REG_TMP1 },
{ "tosshleax", REG_A, REG_EAXY | REG_TMP1 },
{ "tosshrax", REG_A, REG_AXY | REG_TMP1 },
@ -317,14 +317,14 @@ static const FuncInfo FuncInfoTable[] = {
{ "tosumoda0", REG_A, REG_EAXY | REG_PTR1 }, /* also ptr4 */
{ "tosumodax", REG_AX, REG_EAXY | REG_PTR1 }, /* also ptr4 */
{ "tosumodeax", REG_EAX, REG_ALL & ~REG_SAVE },
{ "tosumul0ax", REG_AX, REG_ALL },
{ "tosumula0", REG_A, REG_ALL },
{ "tosumulax", REG_AX, REG_ALL },
{ "tosumuleax", REG_EAX, REG_ALL },
{ "tosxor0ax", REG_AX, REG_EAX | REG_TMP1 },
{ "tosxora0", REG_A, REG_AX | REG_TMP1 },
{ "tosxorax", REG_AX, REG_AX | REG_TMP1 },
{ "tosxoreax", REG_EAX, REG_EAX | REG_TMP1 },
{ "tosumul0ax", REG_AX, REG_ALL },
{ "tosumula0", REG_A, REG_ALL },
{ "tosumulax", REG_AX, REG_ALL },
{ "tosumuleax", REG_EAX, REG_ALL },
{ "tosxor0ax", REG_AX, REG_EAXY | REG_TMP1 },
{ "tosxora0", REG_A, REG_AXY | REG_TMP1 },
{ "tosxorax", REG_AX, REG_AXY | REG_TMP1 },
{ "tosxoreax", REG_EAX, REG_EAXY | REG_TMP1 },
{ "tsteax", REG_EAX, REG_Y },
{ "utsteax", REG_EAX, REG_Y },
};