Change the .LOCAL command so that the cheap local symbol prefix is kept.
This allows to create macros with local labels that expand to cheap local symbols when the macro is expanded. Tip from Dagan Galarneau <dagan@msd.com> git-svn-id: svn://svn.cc65.org/cc65/trunk@1405 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
ffdc8396c5
commit
9464c7dd29
1 changed files with 9 additions and 2 deletions
|
@ -44,6 +44,7 @@
|
|||
/* ca65 */
|
||||
#include "condasm.h"
|
||||
#include "error.h"
|
||||
#include "global.h"
|
||||
#include "istack.h"
|
||||
#include "nexttok.h"
|
||||
#include "pseudo.h"
|
||||
|
@ -541,8 +542,14 @@ static int MacExpand (void* Data)
|
|||
IdDesc* I = Mac->M->Locals;
|
||||
while (I) {
|
||||
if (strcmp (SVal, I->Id) == 0) {
|
||||
/* This is in fact a local symbol, change the name */
|
||||
sprintf (SVal, "___%04X__", Mac->LocalStart + Index);
|
||||
/* This is in fact a local symbol, change the name. Be sure
|
||||
* to generate a local label name if the original name was
|
||||
* a local label, and also generate a name that cannot be
|
||||
* generated by a user.
|
||||
*/
|
||||
unsigned PrefixLen = (I->Id[0] == LocalStart);
|
||||
sprintf (SVal, "%.*sLOCAL-MACRO-SYMBOL-%04X", PrefixLen,
|
||||
I->Id, Mac->LocalStart + Index);
|
||||
break;
|
||||
}
|
||||
/* Next symbol */
|
||||
|
|
Loading…
Add table
Reference in a new issue