From 0fbf2af09d9cdff1f73a47d79b7735258db4a34b Mon Sep 17 00:00:00 2001 From: mrdudz Date: Fri, 7 May 2021 18:38:26 +0200 Subject: [PATCH] Fix the warning that is produced for unused functions --- src/cc65/error.c | 2 ++ src/cc65/error.h | 1 + src/cc65/symtab.c | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/cc65/error.c b/src/cc65/error.c index 0118d50b8..b1529d0b5 100644 --- a/src/cc65/error.c +++ b/src/cc65/error.c @@ -78,6 +78,7 @@ IntStack WarnUnreachableCode= INTSTACK(1); /* - unreachable code */ IntStack WarnUnusedLabel = INTSTACK(1); /* - unused labels */ IntStack WarnUnusedParam = INTSTACK(1); /* - unused parameters */ IntStack WarnUnusedVar = INTSTACK(1); /* - unused variables */ +IntStack WarnUnusedFunc = INTSTACK(1); /* - unused functions */ /* Map the name of a warning to the intstack that holds its state */ typedef struct WarnMapEntry WarnMapEntry; @@ -97,6 +98,7 @@ static WarnMapEntry WarnMap[] = { { &WarnStructParam, "struct-param" }, { &WarnUnknownPragma, "unknown-pragma" }, { &WarnUnreachableCode, "unreachable-code" }, + { &WarnUnusedFunc, "unused-func" }, { &WarnUnusedLabel, "unused-label" }, { &WarnUnusedParam, "unused-param" }, { &WarnUnusedVar, "unused-var" }, diff --git a/src/cc65/error.h b/src/cc65/error.h index 31c46f513..c4420c434 100644 --- a/src/cc65/error.h +++ b/src/cc65/error.h @@ -75,6 +75,7 @@ extern IntStack WarnUnreachableCode; /* - unreachable code */ extern IntStack WarnUnusedLabel; /* - unused labels */ extern IntStack WarnUnusedParam; /* - unused parameters */ extern IntStack WarnUnusedVar; /* - unused variables */ +extern IntStack WarnUnusedFunc; /* - unused functions */ /* Forward */ struct StrBuf; diff --git a/src/cc65/symtab.c b/src/cc65/symtab.c index 6ec255497..4073a38bc 100644 --- a/src/cc65/symtab.c +++ b/src/cc65/symtab.c @@ -173,6 +173,10 @@ static void CheckSymTable (SymTable* Tab) if (IS_Get (&WarnUnusedParam)) { Warning ("Parameter '%s' is never used", Entry->Name); } + } else if (Flags & SC_FUNC) { + if (IS_Get (&WarnUnusedFunc)) { + Warning ("Function '%s' is defined but never used", Entry->Name); + } } else { if (IS_Get (&WarnUnusedVar)) { Warning ("Variable '%s' is defined but never used", Entry->Name);