Break DS80C390 support into seperate port (ds390); first pass at spilling temporaries...
[fw/sdcc] / src / SDCCsymt.c
index 0668357471091591094009f357f3dd20dc568226..02fad1ff6f0940058bf71e62b7c4c5b672624ee2 100644 (file)
@@ -420,7 +420,7 @@ link  *mergeSpec ( link *dest, link *src )
     SPEC_BLEN(dest) |= SPEC_BLEN(src);
     SPEC_BSTR(dest) |= SPEC_BSTR(src);
     SPEC_TYPEDEF(dest) |= SPEC_TYPEDEF(src);
-    SPEC_BANKED(dest) |= SPEC_BANKED(src);
+    SPEC_NONBANKED(dest) |= SPEC_NONBANKED(src);
 
     if ( IS_STRUCT(dest) && SPEC_STRUCT(dest) == NULL )
        SPEC_STRUCT(dest) = SPEC_STRUCT(src);   
@@ -1019,8 +1019,8 @@ static void  checkSClass ( symbol *sym )
            SPEC_SCLS(sym->etype) = (options.useXstack  ?
                                     S_XSTACK : S_STACK ) ;
        else
-           SPEC_SCLS(sym->etype) = (options.useXstack  ?
-                                    S_XDATA :S_DATA ) ;
+           SPEC_SCLS(sym->etype) = (options.model  ?
+                                    S_XDATA : S_DATA ) ;
     }
 }
 
@@ -1372,8 +1372,9 @@ int   checkFunction (symbol   *sym)
     deleteSym (SymbolTab,csym,csym->name);
     addSym    (SymbolTab,sym,sym->name,sym->level,sym->block);
     if (IS_EXTERN(csym->etype) && !
-       IS_EXTERN(sym->etype))
+       IS_EXTERN(sym->etype)) {
        addSet(&publics,sym);
+    }
     return 1 ;      
 }
 
@@ -1974,6 +1975,7 @@ void initCSupport ()
                        ssu[su],
                        sbwd[bwd]);
                __muldiv[muldivmod][bwd][su] = funcOfType(buffer, __multypes[bwd][su], __multypes[bwd][su], 2, options.intlong_rent);
+               SPEC_NONBANKED(__muldiv[muldivmod][bwd][su]->etype) = 1;
 #if ENABLE_MICHAELH_REGPARM_HACK
                if (bwd < 2) 
                    _makeRegParam(__muldiv[muldivmod][bwd][su]);