]> git.sur5r.net Git - cc65/commitdiff
Fix for: cc65 forgetting to emit labels (Alan Cox) 137/head
authorSpiro Trikaliotis <spiro.trikaliotis@gmx.de>
Tue, 14 Oct 2014 11:32:58 +0000 (13:32 +0200)
committerSpiro Trikaliotis <spiro.trikaliotis@gmx.de>
Tue, 14 Oct 2014 11:32:58 +0000 (13:32 +0200)
Alan Cox provided this on 2014-10-02 on the cc65.org mailing list:

http://www.cc65.org/mailarchive/2014-10/11673.html
[...]
It breaks in several spots with cc65 where cc65 forgets to emit the
labels for the goto statements - the code is there but with no label
and it them blows up linking
[...]

He also provided a fix:
http://www.cc65.org/mailarchive/2014-10/11675.html

which was approved by Uz:
http://www.cc65.org/mailarchive/2014-10/11679.html

This is the patch of Alan Cox, adjusted only to the new locations on
cc65/github.

src/cc65/symtab.c

index 191daddad50df5c213effd4617921f5891bbd38c..1f63e9430da997d511994f76b0bd3933ed5f514a 100644 (file)
@@ -268,7 +268,9 @@ void EnterFunctionLevel (void)
     TagTab  = S;
 
     /* Create and assign a new label table */
-    LabelTab = NewSymTable (SYMTAB_SIZE_LABEL);
+    S = NewSymTable (SYMTAB_SIZE_LABEL);
+    S->PrevTab = LabelTab;
+    LabelTab = S;
 }
 
 
@@ -286,6 +288,7 @@ void RememberFunctionLevel (struct FuncDesc* F)
     /* Don't delete the tables */
     SymTab = SymTab->PrevTab;
     TagTab = TagTab->PrevTab;
+    LabelTab = LabelTab->PrevTab;
 }