From 5988ec37cdce1655b14159a3a20a5493ba5459fd Mon Sep 17 00:00:00 2001 From: Piotr Fusik Date: Wed, 15 Feb 2017 18:51:27 +0100 Subject: [PATCH] Revert "Disallow global variable declarations with an initializer." This reverts commit 1f12a06f7cc2ae79a800fe3faed727513364091b. --- src/cc65/compile.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cc65/compile.c b/src/cc65/compile.c index 9cdeaf7e5..48a5c29d3 100644 --- a/src/cc65/compile.c +++ b/src/cc65/compile.c @@ -144,14 +144,17 @@ static void Parse (void) ** ** - if it is not a typedef or function, ** - if we don't had a storage class given ("int i") - ** or the storage class is explicitly specified as static. + ** - if the storage class is explicitly specified as static, + ** - or if there is an initialization. ** ** This means that "extern int i;" will not get storage allocated. */ if ((Decl.StorageClass & SC_FUNC) != SC_FUNC && (Decl.StorageClass & SC_TYPEMASK) != SC_TYPEDEF && ((Spec.Flags & DS_DEF_STORAGE) != 0 || - (Decl.StorageClass & (SC_EXTERN|SC_STATIC)) == SC_STATIC)) { + (Decl.StorageClass & (SC_EXTERN|SC_STATIC)) == SC_STATIC || + ((Decl.StorageClass & SC_EXTERN) != 0 && + CurTok.Tok == TOK_ASSIGN))) { /* We will allocate storage */ Decl.StorageClass |= SC_STORAGE; -- 2.39.5