xa51 port isn't finished yet
[fw/sdcc] / src / SDCC.lex
index ab68168ece0719e59ea802e323f0fefad70800b8..723352b42b82d5710f9148dccb381c6ee48a5a95 100644 (file)
@@ -76,8 +76,10 @@ struct options  save_options  ;
      P_NOGCSE    ,
      P_CALLEE_SAVES,
      P_EXCLUDE   ,
+     P_NOIV      ,
      P_LOOPREV   ,
-     P_OVERLAY
+     P_OVERLAY_             /* I had a strange conflict with P_OVERLAY while */
+                    /* cross-compiling for MINGW32 with gcc 3.2 */
  };
 
 %}
@@ -457,10 +459,13 @@ void doPragma (int op, char *cp)
     case P_EXCLUDE:
        parseWithComma(options.excludeRegs, Safe_strdup(cp));
        break;
+    case P_NOIV:
+       options.noiv = 1;
+       break;
     case P_LOOPREV:
        optimize.noLoopReverse = 1;
        break;
-    case P_OVERLAY:
+    case P_OVERLAY_:
        break; /* notyet */
     }
 }
@@ -542,6 +547,11 @@ int process_pragma(char *s)
        return 0;
     }
 
+    if (strncmp(cp,PRAGMA_NOIV,strlen(PRAGMA_NOIV)) == 0) {
+       doPragma(P_NOIV,cp+strlen(PRAGMA_NOIV));
+       return 0;
+    }
+
     if (strncmp(cp,PRAGMA_NOLOOPREV,strlen(PRAGMA_NOLOOPREV)) == 0) {
        doPragma(P_LOOPREV,NULL);
        return 0;
@@ -573,10 +583,13 @@ int yyerror(char *s)
 {
    fflush(stdout);
 
-   if (yylineno && filename)
-       fprintf(stdout,"\n%s:%d: %s: token -> '%s' ; column %d\n",
-               filename,yylineno,
-               s,yytext,column);
-   fatalError++;
+   if (yylineno && filename) {
+     fprintf(stdout,"\n%s:%d: %s: token -> '%s' ; column %d\n",
+            filename,yylineno,
+            s,yytext,column);
+     fatalError++;
+   } else {
+     // this comes from an empy file, no problem
+   }
    return 0;
 }