]> git.sur5r.net Git - cc65/commitdiff
Fix minor function handling stuff
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 10 Jun 2000 16:33:25 +0000 (16:33 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 10 Jun 2000 16:33:25 +0000 (16:33 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@53 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/function.c

index 4915286ce05e7399d350bf9024173757e1775f35..e8fe845750d8f40431f8ba5dc3a506bd18ad8797 100644 (file)
@@ -60,8 +60,8 @@ struct Function {
     type*              ReturnType;     /* Function return type */
     struct FuncDesc*   Desc;           /* Function descriptor */
     CodeMark           EntryCode;      /* Backpatch addr for entry code */
-    unsigned           LocalMax;       /* Total space for locals */
-    unsigned                   LocalSize;      /* Current space for locals */
+    int                        LocalMax;       /* Total space for locals */
+    int                        LocalSize;      /* Current space for locals */
     unsigned           RetLab;         /* Return code label */
 };
 
@@ -156,17 +156,14 @@ unsigned GetRetLab (const Function* F)
 int AllocLocalSpace (Function* F, unsigned Size)
 /* Allocate space for the function locals, return stack offset */
 {
-    /* Remember the current offset */
-    unsigned Offs = F->LocalSize;
-
     /* Add the size */
-    F->LocalSize += Size;
+    F->LocalSize += Size;                      
     if (F->LocalSize > F->LocalMax) {
        F->LocalMax = F->LocalSize;
     }
 
     /* Return the offset, it is below the initial stack pointer */
-    return -(int)Offs;
+    return -F->LocalSize;;
 }
 
 
@@ -230,10 +227,12 @@ void NewFunc (SymEntry* Func)
     /* Generate function entry code if needed */
     g_enter (TypeOf (Func->Type), GetParamSize (CurrentFunc));
 
-    /* Remember the current code position to create local variable space once
-     * we have created the function body itself.
+    /* Remember the current code position. This may be used later to create
+     * local variable space once we have created the function body itself.
+     * Currently this is not possible because the stack offsets of all locals
+     * have to be known in advance.
      */
-    RememberEntry (Func);
+    RememberEntry (CurrentFunc);
 
     /* Parse the function body */
     oursp = 0;
@@ -267,3 +266,4 @@ void NewFunc (SymEntry* Func)
 
 
 
+