1
0
mirror of https://github.com/cc65/cc65.git synced 2025-08-09 13:25:06 +00:00

Changed g_addaddr_local() codegen to reduce code size.

This commit is contained in:
acqn
2021-02-22 12:33:26 +08:00
committed by Oliver Schmidt
parent 8eeaaa3f36
commit b02838439c

View File

@@ -2112,6 +2112,14 @@ void g_addaddr_local (unsigned flags attribute ((unused)), int offs)
/* Add the offset */ /* Add the offset */
offs -= StackPtr; offs -= StackPtr;
if (IS_Get (&CodeSizeFactor) <= 100) {
if (offs != 0) {
/* We cannot address more then 256 bytes of locals anyway */
g_inc (CF_INT | CF_CONST, offs);
}
/* Add the current stackpointer value */
AddCodeLine ("jsr leaaxsp");
} else {
if (offs != 0) { if (offs != 0) {
/* We cannot address more then 256 bytes of locals anyway */ /* We cannot address more then 256 bytes of locals anyway */
L = GetLocalLabel(); L = GetLocalLabel();
@@ -2135,6 +2143,7 @@ void g_addaddr_local (unsigned flags attribute ((unused)), int offs)
AddCodeLine ("adc sp+1"); AddCodeLine ("adc sp+1");
AddCodeLine ("tax"); AddCodeLine ("tax");
AddCodeLine ("tya"); AddCodeLine ("tya");
}
} }