* src/pic/gen.c (aopOp): do not generate AOP_ACC operands as pic14
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 21 Jul 2005 17:39:06 +0000 (17:39 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 21 Jul 2005 17:39:06 +0000 (17:39 +0000)
  architecture cannot handle them efficiently, fixes bug #1235003
* src/pic16/device.c (pic16_dump_{u,i}section,pic16_dump_int_registers):
  check for empty sets before using them (fixes bug #1232190)

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3805 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/pic/gen.c
src/pic16/device.c

index 5be3170a6726ef36fe1f3e2670364f1ae7281c6b..be621fd165cab5aa6f11f2676c18bcba6b4612eb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-07-21 Raphael Neider <rneider AT web.de>
+
+       * src/pic/gen.c (aopOp): do not generate AOP_ACC operands as pic14
+         architecture cannot handle them efficiently, fixes bug #1235003
+       * src/pic16/device.c (pic16_dump_{u,i}section,pic16_dump_int_registers):
+         check for empty sets before using them (fixes bug #1232190)
+
 2005-07-19 Maarten Brock <sourceforge.brock AT dse.nl>
 
        * as/mcs51/lkarea.c (lnkarea, lnkarea2): improved BSEG size calculation,
index 903927211512f3d8b765bf73d05d324854ed520d..d37b6e597be2980d40bb8e109561c6e00f3d2d54 100644 (file)
@@ -77,7 +77,7 @@ char *fReturnpic14[] = {"temp1","temp2","temp3","temp4" };
 unsigned fReturnSizePic = 4; /* shared with ralloc.c */
 static char **fReturn = fReturnpic14;
 
-static char *accUse[] = {"a","b"};
+//static char *accUse[] = {"a","b"};
 
 //static short rbank = -1;
 
@@ -853,6 +853,10 @@ void aopOp (operand *op, iCode *ic, bool result)
                        return;
                }
                
+#if 0
+               /* WREG is not usable as an ordinary operand with PIC architecture,
+                * one might introduce a scratch register that can be used to make
+                * WREG accesible as an operand... disable WREG for now */
                if (sym->accuse) {
                        int i;
                        aop = op->aop = sym->aop = newAsmop(AOP_ACC);
@@ -862,6 +866,7 @@ void aopOp (operand *op, iCode *ic, bool result)
                        DEBUGpic14_emitcode(";","%d size=%d",__LINE__,aop->size);
                        return;  
                }
+#endif
                
                if (sym->ruonly ) {
                        if(sym->isptr) {        // && sym->uptr 
index 8ab5595c5443fed586ea1ef6332bd4535534066f..a2617244c9d7ff6cc851d8b726b5bdfe6ceb3ca2 100644 (file)
@@ -681,6 +681,7 @@ void pic16_dump_usection(FILE *of, set *section, int fix)
   regs *r1;
 
        /* put all symbols in an array */
+       if (!elementsInSet(section)) return;
        rlist = Safe_calloc(elementsInSet(section), sizeof(regs *));
        r = rlist[0]; i = 0;
        for(rprev = setFirstItem(section); rprev; rprev = setNextItem(section)) {
@@ -779,6 +780,7 @@ void pic16_dump_isection(FILE *of, set *section, int fix)
   symbol **slist;
 
        /* put all symbols in an array */
+       if (!elementsInSet(section)) return;
        slist = Safe_calloc(elementsInSet(section), sizeof(symbol *));
        s = slist[0]; i = 0;
        for(sprev = setFirstItem(section); sprev; sprev = setNextItem(section)) {
@@ -863,6 +865,7 @@ void pic16_dump_int_registers(FILE *of, set *section)
   regs **rlist;
 
        /* put all symbols in an array */
+       if (!elementsInSet(section)) return;
        rlist = Safe_calloc(elementsInSet(section), sizeof(regs *));
        r = rlist[0]; i = 0;
        for(rprev = setFirstItem(section); rprev; rprev = setNextItem(section)) {