From 58b1c219965754f9a9367d1e75637d54998c8365 Mon Sep 17 00:00:00 2001 From: Kugel Fuhr <98353208+kugelfuhr@users.noreply.github.com> Date: Sun, 1 Sep 2024 10:22:40 +0200 Subject: [PATCH 1/4] Removed #pragma names that have been obsolete for over a decade. --- src/cc65/pragma.c | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/src/cc65/pragma.c b/src/cc65/pragma.c index b9394494b..31cfe3b73 100644 --- a/src/cc65/pragma.c +++ b/src/cc65/pragma.c @@ -68,28 +68,20 @@ typedef enum { PRAGMA_ALIGN, PRAGMA_ALLOW_EAGER_INLINE, PRAGMA_BSS_NAME, - PRAGMA_BSSSEG, /* obsolete */ PRAGMA_CHARMAP, PRAGMA_CHECK_STACK, - PRAGMA_CHECKSTACK, /* obsolete */ PRAGMA_CODE_NAME, - PRAGMA_CODESEG, /* obsolete */ PRAGMA_CODESIZE, PRAGMA_DATA_NAME, - PRAGMA_DATASEG, /* obsolete */ PRAGMA_INLINE_STDFUNCS, PRAGMA_LOCAL_STRINGS, PRAGMA_MESSAGE, PRAGMA_OPTIMIZE, PRAGMA_REGISTER_VARS, PRAGMA_REGVARADDR, - PRAGMA_REGVARS, /* obsolete */ PRAGMA_RODATA_NAME, - PRAGMA_RODATASEG, /* obsolete */ PRAGMA_SIGNED_CHARS, - PRAGMA_SIGNEDCHARS, /* obsolete */ PRAGMA_STATIC_LOCALS, - PRAGMA_STATICLOCALS, /* obsolete */ PRAGMA_WARN, PRAGMA_WRAPPED_CALL, PRAGMA_WRITABLE_STRINGS, @@ -105,28 +97,20 @@ static const struct Pragma { { "align", PRAGMA_ALIGN }, { "allow-eager-inline", PRAGMA_ALLOW_EAGER_INLINE }, { "bss-name", PRAGMA_BSS_NAME }, - { "bssseg", PRAGMA_BSSSEG }, /* obsolete */ { "charmap", PRAGMA_CHARMAP }, { "check-stack", PRAGMA_CHECK_STACK }, - { "checkstack", PRAGMA_CHECKSTACK }, /* obsolete */ { "code-name", PRAGMA_CODE_NAME }, - { "codeseg", PRAGMA_CODESEG }, /* obsolete */ { "codesize", PRAGMA_CODESIZE }, { "data-name", PRAGMA_DATA_NAME }, - { "dataseg", PRAGMA_DATASEG }, /* obsolete */ { "inline-stdfuncs", PRAGMA_INLINE_STDFUNCS }, { "local-strings", PRAGMA_LOCAL_STRINGS }, { "message", PRAGMA_MESSAGE }, { "optimize", PRAGMA_OPTIMIZE }, { "register-vars", PRAGMA_REGISTER_VARS }, { "regvaraddr", PRAGMA_REGVARADDR }, - { "regvars", PRAGMA_REGVARS }, /* obsolete */ { "rodata-name", PRAGMA_RODATA_NAME }, - { "rodataseg", PRAGMA_RODATASEG }, /* obsolete */ { "signed-chars", PRAGMA_SIGNED_CHARS }, - { "signedchars", PRAGMA_SIGNEDCHARS }, /* obsolete */ { "static-locals", PRAGMA_STATIC_LOCALS }, - { "staticlocals", PRAGMA_STATICLOCALS }, /* obsolete */ { "warn", PRAGMA_WARN }, { "wrapped-call", PRAGMA_WRAPPED_CALL }, { "writable-strings", PRAGMA_WRITABLE_STRINGS }, @@ -402,22 +386,18 @@ static void ApplySegNamePragma (pragma_t Token, int PushPop, const char* Name, u switch (Token) { case PRAGMA_CODE_NAME: - case PRAGMA_CODESEG: Seg = SEG_CODE; break; case PRAGMA_RODATA_NAME: - case PRAGMA_RODATASEG: Seg = SEG_RODATA; break; case PRAGMA_DATA_NAME: - case PRAGMA_DATASEG: Seg = SEG_DATA; break; case PRAGMA_BSS_NAME: - case PRAGMA_BSSSEG: Seg = SEG_BSS; break; @@ -933,9 +913,6 @@ static void ParsePragmaString (void) FlagPragma (PES_STMT, Pragma, &B, &EagerlyInlineFuncs); break; - case PRAGMA_BSSSEG: - Warning ("#pragma bssseg is obsolete, please use #pragma bss-name instead"); - /* FALLTHROUGH */ case PRAGMA_BSS_NAME: /* TODO: PES_STMT or even PES_EXPR (PES_DECL) maybe? */ SegNamePragma (PES_FUNC, PRAGMA_BSS_NAME, &B); @@ -945,17 +922,11 @@ static void ParsePragmaString (void) CharMapPragma (PES_IMM, &B); break; - case PRAGMA_CHECKSTACK: - Warning ("#pragma checkstack is obsolete, please use #pragma check-stack instead"); - /* FALLTHROUGH */ case PRAGMA_CHECK_STACK: /* TODO: PES_SCOPE maybe? */ FlagPragma (PES_FUNC, Pragma, &B, &CheckStack); break; - case PRAGMA_CODESEG: - Warning ("#pragma codeseg is obsolete, please use #pragma code-name instead"); - /* FALLTHROUGH */ case PRAGMA_CODE_NAME: /* PES_FUNC is the only sensible option so far */ SegNamePragma (PES_FUNC, PRAGMA_CODE_NAME, &B); @@ -966,9 +937,6 @@ static void ParsePragmaString (void) IntPragma (PES_STMT, Pragma, &B, &CodeSizeFactor, 10, 1000); break; - case PRAGMA_DATASEG: - Warning ("#pragma dataseg is obsolete, please use #pragma data-name instead"); - /* FALLTHROUGH */ case PRAGMA_DATA_NAME: /* TODO: PES_STMT or even PES_EXPR (PES_DECL) maybe? */ SegNamePragma (PES_FUNC, PRAGMA_DATA_NAME, &B); @@ -999,33 +967,21 @@ static void ParsePragmaString (void) FlagPragma (PES_FUNC, Pragma, &B, &AllowRegVarAddr); break; - case PRAGMA_REGVARS: - Warning ("#pragma regvars is obsolete, please use #pragma register-vars instead"); - /* FALLTHROUGH */ case PRAGMA_REGISTER_VARS: /* TODO: PES_STMT or even PES_EXPR (PES_DECL) maybe? */ FlagPragma (PES_FUNC, Pragma, &B, &EnableRegVars); break; - case PRAGMA_RODATASEG: - Warning ("#pragma rodataseg is obsolete, please use #pragma rodata-name instead"); - /* FALLTHROUGH */ case PRAGMA_RODATA_NAME: /* TODO: PES_STMT or even PES_EXPR maybe? */ SegNamePragma (PES_FUNC, PRAGMA_RODATA_NAME, &B); break; - case PRAGMA_SIGNEDCHARS: - Warning ("#pragma signedchars is obsolete, please use #pragma signed-chars instead"); - /* FALLTHROUGH */ case PRAGMA_SIGNED_CHARS: /* TODO: PES_STMT or even PES_EXPR maybe? */ FlagPragma (PES_FUNC, Pragma, &B, &SignedChars); break; - case PRAGMA_STATICLOCALS: - Warning ("#pragma staticlocals is obsolete, please use #pragma static-locals instead"); - /* FALLTHROUGH */ case PRAGMA_STATIC_LOCALS: /* TODO: PES_STMT or even PES_EXPR (PES_DECL) maybe? */ FlagPragma (PES_FUNC, Pragma, &B, &StaticLocals); From ba263d13a7c7e99b07e080e68184bc6df17a7146 Mon Sep 17 00:00:00 2001 From: Kugel Fuhr <98353208+kugelfuhr@users.noreply.github.com> Date: Sun, 1 Sep 2024 10:22:57 +0200 Subject: [PATCH 2/4] Allow alternative #pragma names using underscores. --- src/cc65/pragma.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/cc65/pragma.c b/src/cc65/pragma.c index 31cfe3b73..ee71b42d8 100644 --- a/src/cc65/pragma.c +++ b/src/cc65/pragma.c @@ -86,36 +86,49 @@ typedef enum { PRAGMA_WRAPPED_CALL, PRAGMA_WRITABLE_STRINGS, PRAGMA_ZPSYM, - PRAGMA_COUNT } pragma_t; /* Pragma table */ static const struct Pragma { const char* Key; /* Keyword */ pragma_t Tok; /* Token */ -} Pragmas[PRAGMA_COUNT] = { +} Pragmas[] = { { "align", PRAGMA_ALIGN }, { "allow-eager-inline", PRAGMA_ALLOW_EAGER_INLINE }, + { "allow_eager_inline", PRAGMA_ALLOW_EAGER_INLINE }, { "bss-name", PRAGMA_BSS_NAME }, + { "bss_name", PRAGMA_BSS_NAME }, { "charmap", PRAGMA_CHARMAP }, { "check-stack", PRAGMA_CHECK_STACK }, + { "check_stack", PRAGMA_CHECK_STACK }, { "code-name", PRAGMA_CODE_NAME }, + { "code_name", PRAGMA_CODE_NAME }, { "codesize", PRAGMA_CODESIZE }, { "data-name", PRAGMA_DATA_NAME }, + { "data_name", PRAGMA_DATA_NAME }, { "inline-stdfuncs", PRAGMA_INLINE_STDFUNCS }, + { "inline_stdfuncs", PRAGMA_INLINE_STDFUNCS }, { "local-strings", PRAGMA_LOCAL_STRINGS }, + { "local_strings", PRAGMA_LOCAL_STRINGS }, { "message", PRAGMA_MESSAGE }, { "optimize", PRAGMA_OPTIMIZE }, { "register-vars", PRAGMA_REGISTER_VARS }, + { "register_vars", PRAGMA_REGISTER_VARS }, { "regvaraddr", PRAGMA_REGVARADDR }, { "rodata-name", PRAGMA_RODATA_NAME }, + { "rodata_name", PRAGMA_RODATA_NAME }, { "signed-chars", PRAGMA_SIGNED_CHARS }, + { "signed_chars", PRAGMA_SIGNED_CHARS }, { "static-locals", PRAGMA_STATIC_LOCALS }, + { "static_locals", PRAGMA_STATIC_LOCALS }, { "warn", PRAGMA_WARN }, { "wrapped-call", PRAGMA_WRAPPED_CALL }, + { "wrapped_call", PRAGMA_WRAPPED_CALL }, { "writable-strings", PRAGMA_WRITABLE_STRINGS }, + { "writable_strings", PRAGMA_WRITABLE_STRINGS }, { "zpsym", PRAGMA_ZPSYM }, }; +#define PRAGMA_COUNT (sizeof (Pragmas) / sizeof (Pragmas[0])) /* Result of ParsePushPop */ typedef enum { From 4008ec581423d5e17ac5e35ca9ee307f79f20a49 Mon Sep 17 00:00:00 2001 From: Kugel Fuhr <98353208+kugelfuhr@users.noreply.github.com> Date: Sun, 1 Sep 2024 10:23:10 +0200 Subject: [PATCH 3/4] Document the new #pragma names. --- doc/cc65.sgml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/cc65.sgml b/doc/cc65.sgml index efe48b61b..2219ccf6a 100644 --- a/doc/cc65.sgml +++ b/doc/cc65.sgml @@ -1273,6 +1273,12 @@ If the first parameter is #pragma allow-eager-inline ([push,] on|off)