Fixed a parameter allocation bug
authorsandeep <sandeep@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 18 Sep 2000 16:49:26 +0000 (16:49 +0000)
committersandeep <sandeep@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 18 Sep 2000 16:49:26 +0000 (16:49 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@375 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCCmem.c

index 2fb79e0b992642998610d07f1a6bd05da71ab147..cb71eedb3e88f95385bf16e1afce24fab2a69c80 100644 (file)
@@ -465,11 +465,15 @@ void allocParms ( value  *val )
                   note here that we put it into the overlay segment
                   first, we will remove it from the overlay segment
                   after the overlay determination has been done */
-               SPEC_OCLS(lval->etype) = SPEC_OCLS(lval->sym->etype) = 
-                   ( options.model == MODEL_SMALL ? port->mem.default_local_map : 
-                     (options.noOverlay ? port->mem.default_local_map
-                      :overlay ));
-           
+               if (options.model == MODEL_SMALL) {
+                   SPEC_OCLS(lval->etype) = SPEC_OCLS(lval->sym->etype) = 
+                       ( options.model == MODEL_SMALL ? port->mem.default_local_map : 
+                         (options.noOverlay ? port->mem.default_local_map
+                          :overlay ));
+               } else {
+                   SPEC_SCLS(lval->etype) = S_XDATA;
+                   SPEC_OCLS(lval->etype) = SPEC_OCLS(lval->sym->etype) = xdata;
+               }
            allocIntoSeg(lval->sym);
        }
     }