* src/SDCCglue.h: make tmpfileNameSet available for preOutName
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 15 Feb 2003 23:23:56 +0000 (23:23 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 15 Feb 2003 23:23:56 +0000 (23:23 +0000)
* src/SDCCmain.c (preProcess): make sure, that preOutName will be deleted;
make -V work again; --c1mode reads now from stdin
* doc/sdccman.lyx: added --c1mode
* support/Util/SDCCerr.c: new messages for c1 mode
* support/Util/SDCCerr.h: new messages for c1 mode
* src/SDCC.lex (checkCurrFile): test if fullSrcFileName is NULL for c1mode

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

ChangeLog
doc/sdccman.lyx
src/SDCC.lex
src/SDCCglue.h
src/SDCCmain.c
support/Util/SDCCerr.c
support/Util/SDCCerr.h

index 5f69290e98e242dfe2f0bf5d75db2137610ba678..cdecb3ff492500091ed21cd241d15b1e9aa6dade 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2003-02-15  Bernhard Held <bernhard@bernhardheld.de>
+
+       * src/SDCCglue.h: make tmpfileNameSet available for preOutName
+       * src/SDCCmain.c (preProcess): make sure, that preOutName will be deleted;
+       make -V work again; --c1mode reads now from stdin
+       * doc/sdccman.lyx: added --c1mode
+       * support/Util/SDCCerr.c: new messages for c1 mode
+       * support/Util/SDCCerr.h: new messages for c1 mode
+       * src/SDCC.lex (checkCurrFile): test if fullSrcFileName is NULL for c1mode
+
 2003-02-15    <johan@balder>
 
        * src/asm.c: new options: --no-c-code-in-asm and --i-code-in-asm
 2003-02-15    <johan@balder>
 
        * src/asm.c: new options: --no-c-code-in-asm and --i-code-in-asm
index 961650e8f032473fbeec97370dbbe620305e408f..b961c03f6b1b3112e83bb261fbd9fb75c89b3a53 100644 (file)
@@ -2008,6 +2008,15 @@ Other Options
 \labelwidthstring 00.00.0000
 
 
 \labelwidthstring 00.00.0000
 
 
+\series bold 
+--c1mode
+\series default 
+ reads the preprocessed source from standard input and compiles it.
+ The file name for the assembler output must be specified using the -o option.
+\layout List
+\labelwidthstring 00.00.0000
+
+
 \series bold 
 -E
 \series default 
 \series bold 
 -E
 \series default 
index 723352b42b82d5710f9148dccb381c6ee48a5a95..a400a6f0ca928ae6391203ce377e48d1965b5cf2 100644 (file)
@@ -41,7 +41,6 @@ char *currFname;
 
 extern int lineno, column;
 extern char *filename ;
 
 extern int lineno, column;
 extern char *filename ;
-extern char *fullSrcFileName ;
 int   yylineno = 1               ;
 void count()                     ;
 int process_pragma(char *);
 int   yylineno = 1               ;
 void count()                     ;
 int process_pragma(char *);
@@ -286,7 +285,9 @@ int checkCurrFile ( char *s)
     /* get the currentfile name info    */
     s++ ;
 
     /* get the currentfile name info    */
     s++ ;
 
-    if ( strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
+    /* in c1mode fullSrcFileName is NULL */
+    if ( fullSrcFileName &&
+         strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
       lineno = yylineno = lNum;                                        
       currFname = fullSrcFileName ;
     }  else {
       lineno = yylineno = lNum;                                        
       currFname = fullSrcFileName ;
     }  else {
index 6b3a3b3ce192cd32529b02ff0b650a80c7a884c4..e2a61cae0fd706032097d319c306325e550e8be6 100644 (file)
@@ -1,25 +1,25 @@
 /*-------------------------------------------------------------------------
 
 /*-------------------------------------------------------------------------
 
-  SDCCglue.h - glues everything we have done together into one file.                 
+  SDCCglue.h - glues everything we have done together into one file.
                 Written By -  Sandeep Dutta . sandeep.dutta@usa.net (1998)
                 Written By -  Sandeep Dutta . sandeep.dutta@usa.net (1998)
-               
+
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
    later version.
    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation; either version 2, or (at your option) any
    later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-   
+
    In other words, you are welcome to use, share and improve this program.
    You are forbidden to forbid anyone else to use, share and improve
    In other words, you are welcome to use, share and improve this program.
    You are forbidden to forbid anyone else to use, share and improve
-   what you give them.   Help stamp out software-hoarding!  
+   what you give them.   Help stamp out software-hoarding!
 -------------------------------------------------------------------------*/
 #include "SDCCglobl.h"
 #include "SDCCmem.h"
 -------------------------------------------------------------------------*/
 #include "SDCCglobl.h"
 #include "SDCCmem.h"
@@ -37,6 +37,7 @@ int printIvalCharPtr (symbol *, sym_link *, value *, FILE *);
 extern symbol *interrupts[];
 extern set *publics;
 extern set *tmpfileSet;
 extern symbol *interrupts[];
 extern set *publics;
 extern set *tmpfileSet;
+extern set *tmpfileNameSet;
 
 void rm_tmpfiles (void);
 int 
 
 void rm_tmpfiles (void);
 int 
index 6f53e3fcaf9544cbe3871d7fa4c75b92b09ad687..e6f0f3ba9b94a58e8b5c51371fc7c175921cbf55 100644 (file)
@@ -51,7 +51,7 @@ extern int yyparse ();
 FILE *srcFile;                 /* source file          */
 FILE *cdbFile = NULL;          /* debugger information output file */
 char *fullSrcFileName;         /* full name for the source file; */
 FILE *srcFile;                 /* source file          */
 FILE *cdbFile = NULL;          /* debugger information output file */
 char *fullSrcFileName;         /* full name for the source file; */
-                               /* can be NULL while linking without compiling */
+                               /* can be NULL while c1mode or linking without compiling */
 char *fullDstFileName;         /* full name for the output file; */
                                /* only given by -o, otherwise NULL */
 char *dstFileName;             /* destination file name without extension */
 char *fullDstFileName;         /* full name for the output file; */
                                /* only given by -o, otherwise NULL */
 char *dstFileName;             /* destination file name without extension */
@@ -75,8 +75,7 @@ char *libPaths[128];
 int nlibPaths = 0;
 char *relFiles[128];
 int nrelFiles = 0;
 int nlibPaths = 0;
 char *relFiles[128];
 int nrelFiles = 0;
-bool verboseExec = FALSE;
-char *preOutName;
+static char *preOutName;
 
 /* uncomment JAMIN_DS390 to always override and use ds390 port
   for mcs51 work.  This is temporary, for compatibility testing. */
 
 /* uncomment JAMIN_DS390 to always override and use ds390 port
   for mcs51 work.  This is temporary, for compatibility testing. */
@@ -127,7 +126,7 @@ char DefaultExePath[128];
 #define OPTION_NO_CCODE_IN_ASM "--no-c-code-in-asm"
 #define OPTION_ICODE_IN_ASM    "--i-code-in-asm"
 
 #define OPTION_NO_CCODE_IN_ASM "--no-c-code-in-asm"
 #define OPTION_ICODE_IN_ASM    "--i-code-in-asm"
 
-static const OPTION 
+static const OPTION
 optionsTable[] = {
     { 'm',  NULL,                   NULL, "Set the port to use e.g. -mz80." },
     { 'p',  NULL,                   NULL, "Select port specific processor e.g. -mpic14 -p16f84" },
 optionsTable[] = {
     { 'm',  NULL,                   NULL, "Set the port to use e.g. -mz80." },
     { 'p',  NULL,                   NULL, "Select port specific processor e.g. -mpic14 -p16f84" },
@@ -138,7 +137,7 @@ optionsTable[] = {
     { 'U',  NULL,                   NULL, NULL },
     { 'C',  NULL,                   NULL, "Preprocessor option" },
     { 'M',  NULL,                   NULL, "Preprocessor option" },
     { 'U',  NULL,                   NULL, NULL },
     { 'C',  NULL,                   NULL, "Preprocessor option" },
     { 'M',  NULL,                   NULL, "Preprocessor option" },
-    { 'V',  NULL,                   &verboseExec, "Execute verbosely.  Show sub commands as they are run" },
+    { 'V',  NULL,                   &options.verboseExec, "Execute verbosely.  Show sub commands as they are run" },
     { 'S',  NULL,                   &noAssemble, "Compile only; do not assemble or link" },
     { 'W',  NULL,                   NULL, "Pass through options to the pre-processor (p), assembler (a) or linker (l)" },
     { 'L',  NULL,                   NULL, "Add the next field to the library search path" },
     { 'S',  NULL,                   &noAssemble, "Compile only; do not assemble or link" },
     { 'W',  NULL,                   NULL, "Pass through options to the pre-processor (p), assembler (a) or linker (l)" },
     { 'L',  NULL,                   NULL, "Add the next field to the library search path" },
@@ -192,7 +191,7 @@ optionsTable[] = {
     { 0,    "--debug",              &options.debug, "Enable debugging symbol output" },
     { 'v',  OPTION_VERSION,         NULL, "Display sdcc's version" },
     { 'E',  "--preprocessonly",     &preProcOnly, "Preprocess only, do not compile" },
     { 0,    "--debug",              &options.debug, "Enable debugging symbol output" },
     { 'v',  OPTION_VERSION,         NULL, "Display sdcc's version" },
     { 'E',  "--preprocessonly",     &preProcOnly, "Preprocess only, do not compile" },
-    { 0,    "--c1mode",             &options.c1mode, "Act in c1 mode.  The input is preprocessed code, the output is assembly code." },
+    { 0,    "--c1mode",             &options.c1mode, "Act in c1 mode.  The standard input is preprocessed code, the output is assembly code." },
     { 0,    "--help",               NULL, "Display this help" },
     { 0,    OPTION_CALLEE_SAVES,    NULL, "<func[,func,...]> Cause the called function to save registers insted of the caller" },
     { 0,    "--nostdlib",           &options.nostdlib, "Do not include the standard library directory in the search path" },
     { 0,    "--help",               NULL, "Display this help" },
     { 0,    OPTION_CALLEE_SAVES,    NULL, "<func[,func,...]> Cause the called function to save registers insted of the caller" },
     { 0,    "--nostdlib",           &options.nostdlib, "Do not include the standard library directory in the search path" },
@@ -434,7 +433,7 @@ printUsage ()
              "Usage : sdcc [options] filename\n"
              "Options :-\n"
              );
              "Usage : sdcc [options] filename\n"
              "Options :-\n"
              );
-    
+
     printOptions(optionsTable);
 
     for (i = 0; i < NUM_PORTS; i++)
     printOptions(optionsTable);
 
     for (i = 0; i < NUM_PORTS; i++)
@@ -541,7 +540,7 @@ processFile (char *s)
     }
 
   /* otherwise depending on the file type */
     }
 
   /* otherwise depending on the file type */
-  if (strcmp (fext, ".c") == 0 || strcmp (fext, ".C") == 0 || options.c1mode)
+  if (strcmp (fext, ".c") == 0 || strcmp (fext, ".C") == 0)
     {
       /* source file name : not if we already have a
          source file */
     {
       /* source file name : not if we already have a
          source file */
@@ -1148,11 +1147,49 @@ parseCmdLine (int argc, char **argv)
 
       if (!port->parseOption (&argc, argv, &i))
        {
 
       if (!port->parseOption (&argc, argv, &i))
        {
-         /* no option must be a filename */
-          processFile (argv[i]);
+          /* no option must be a filename */
+          if (options.c1mode)
+            {
+               werror (W_NO_FILE_ARG_IN_C1, argv[i]);
+            }
+        else
+            {
+               processFile (argv[i]);
+            }
        }
     }
 
        }
     }
 
+  /* some sanity checks in c1 mode */
+  if (options.c1mode)
+    {
+      int i;
+
+      if (fullSrcFileName)
+       {
+         fclose (srcFile);
+         werror (W_NO_FILE_ARG_IN_C1, fullSrcFileName);
+       }
+      fullSrcFileName = NULL;
+      for (i = 0; i < nrelFiles; ++i)
+       {
+         werror (W_NO_FILE_ARG_IN_C1, relFiles[i]);
+       }
+      for (i = 0; i < nlibFiles; ++i)
+       {
+         werror (W_NO_FILE_ARG_IN_C1, libFiles[i]);
+       }
+      nrelFiles = nlibFiles = 0;
+      if (options.cc_only || noAssemble || preProcOnly)
+       {
+         werror (W_ILLEGAL_OPT_COMBINATION);
+       }
+      options.cc_only = noAssemble = preProcOnly = 0;
+      if (!dstFileName)
+       {
+         werror (E_NEED_OPT_O_IN_C1);
+         exit (1);
+       }
+    }
   /* if no dstFileName given with -o, we've to find one: */
   if (!dstFileName)
     {
   /* if no dstFileName given with -o, we've to find one: */
   if (!dstFileName)
     {
@@ -1473,9 +1510,11 @@ assemble (char **envp)
 static int
 preProcess (char **envp)
 {
 static int
 preProcess (char **envp)
 {
-  preOutName = NULL;
-
-  if (!options.c1mode)
+  if (options.c1mode)
+    {
+      yyin = stdin;
+    }
+  else
     {
       /* if using external stack define the macro */
       if (options.useXstack)
     {
       /* if using external stack define the macro */
       if (options.useXstack)
@@ -1533,13 +1572,16 @@ preProcess (char **envp)
       if (preProcOnly)
         {
           if (fullDstFileName)
       if (preProcOnly)
         {
           if (fullDstFileName)
+           {
               preOutName = Safe_strdup (fullDstFileName);
               preOutName = Safe_strdup (fullDstFileName);
+           }
         }
       else
           preOutName = Safe_strdup (tempfilename ());
 
       /* Have to set cppoutfilename to something, even if just pre-processing. */
       setMainValue ("cppoutfilename", preOutName ? preOutName : "");
         }
       else
           preOutName = Safe_strdup (tempfilename ());
 
       /* Have to set cppoutfilename to something, even if just pre-processing. */
       setMainValue ("cppoutfilename", preOutName ? preOutName : "");
+      addSetHead (&tmpfileNameSet, preOutName);
 
       if (options.verbose)
        printf ("sdcc: Calling preprocessor...\n");
 
       if (options.verbose)
        printf ("sdcc: Calling preprocessor...\n");
@@ -1548,31 +1590,19 @@ preProcess (char **envp)
 
       if (my_system (buffer))
        {
 
       if (my_system (buffer))
        {
-          // @FIX: Dario Vecchio 03-05-2001
-          if (preOutName)
-            {
-              unlink (preOutName);
-              Safe_free (preOutName);
-            }
-          // EndFix
          exit (1);
        }
          exit (1);
        }
-
       if (preProcOnly)
       if (preProcOnly)
-      {
-       exit (0);
-      }
-    }
-  else
-    {
-      preOutName = fullSrcFileName;
-    }
-
-  yyin = fopen (preOutName, "r");
-  if (yyin == NULL)
-    {
-      perror ("Preproc file not found\n");
-      exit (1);
+        {
+         exit (0);
+        }
+      yyin = fopen (preOutName, "r");
+      if (yyin == NULL)
+        {
+          perror ("Preproc file not found\n");
+          exit (1);
+        }
+      addSetHead (&tmpfileSet, yyin);
     }
 
   return 0;
     }
 
   return 0;
@@ -1664,7 +1694,7 @@ _discoverPaths (const char *argv0)
       ExePathList[0] = BINDIR;
     }
 
       ExePathList[0] = BINDIR;
     }
 
-  do 
+  do
     {
       /* Case 1 */
       if (getenv (SDCCDIR_NAME) != NULL)
     {
       /* Case 1 */
       if (getenv (SDCCDIR_NAME) != NULL)
@@ -1717,7 +1747,7 @@ initValues (void)
 
   setMainValue ("dstfilename", dstFileName);
   setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
 
   setMainValue ("dstfilename", dstFileName);
   setMainValue ("fullsrcfilename", fullSrcFileName ? fullSrcFileName : "fullsrcfilename");
-  
+
   if (options.cc_only && fullDstFileName)
     /* compile + assemble and -o given: -o specifies name of object file */
     {
   if (options.cc_only && fullDstFileName)
     /* compile + assemble and -o given: -o specifies name of object file */
     {
@@ -1832,8 +1862,7 @@ main (int argc, char **argv, char **envp)
   parseCmdLine (argc, argv);
 
   /* if no input then printUsage & exit */
   parseCmdLine (argc, argv);
 
   /* if no input then printUsage & exit */
-  if ((!options.c1mode && !fullSrcFileName && !nrelFiles) ||
-      (options.c1mode && !fullSrcFileName))
+  if (!options.c1mode && !fullSrcFileName && !nrelFiles)
     {
       printUsage ();
       exit (0);
     {
       printUsage ();
       exit (0);
@@ -1849,7 +1878,7 @@ main (int argc, char **argv, char **envp)
   initMem ();
   port->finaliseOptions ();
 
   initMem ();
   port->finaliseOptions ();
 
-  if (fullSrcFileName)
+  if (fullSrcFileName || options.c1mode)
     {
       preProcess (envp);
 
     {
       preProcess (envp);
 
@@ -1863,17 +1892,8 @@ main (int argc, char **argv, char **envp)
        printf ("sdcc: Generating code...\n");
 
       yyparse ();
        printf ("sdcc: Generating code...\n");
 
       yyparse ();
-
       if (fatalError) {
       if (fatalError) {
-        // @FIX: Dario Vecchio 03-05-2001
-        if (preOutName) {
-          if (yyin && yyin != stdin)
-            fclose (yyin);
-          unlink (preOutName);
-          Safe_free (preOutName);
-        }
-        // EndFix
-        return 1;
+        exit (1);
       }
 
       if (TARGET_IS_PIC) {
       }
 
       if (TARGET_IS_PIC) {
@@ -1897,21 +1917,11 @@ main (int argc, char **argv, char **envp)
           assemble (envp);
         }
     }
           assemble (envp);
         }
     }
-
   closeDumpFiles();
 
   if (cdbFile)
     fclose (cdbFile);
 
   closeDumpFiles();
 
   if (cdbFile)
     fclose (cdbFile);
 
-  if (yyin && yyin != stdin)
-    fclose (yyin);
-
-  if (preOutName && !options.c1mode)
-    {
-      unlink (preOutName);
-      Safe_free (preOutName);
-    }
-
   if (!options.cc_only &&
       !fatalError &&
       !noAssemble &&
   if (!options.cc_only &&
       !fatalError &&
       !noAssemble &&
index 5aac4a73a2f00ece48a41172fdf0ad47bc31987e..86ae987e0c50dbe3cc945df0c58acd06d7752cd6 100644 (file)
@@ -71,13 +71,13 @@ struct
    "FATAL Compiler Internal Error in file '%s' line number '%d' : %s \n"
    "Contact Author with source code" },
 { E_LVALUE_REQUIRED, ERROR_LEVEL_ERROR,
    "FATAL Compiler Internal Error in file '%s' line number '%d' : %s \n"
    "Contact Author with source code" },
 { E_LVALUE_REQUIRED, ERROR_LEVEL_ERROR,
-   "'lvalue' required for '%s' operation ." },
+   "'lvalue' required for '%s' operation." },
 { E_TMPFILE_FAILED, ERROR_LEVEL_ERROR,
    "Creation of temp file failed" },
 { E_FUNCTION_EXPECTED, ERROR_LEVEL_ERROR,
    "called object is not a function" },
 { E_USING_ERROR, ERROR_LEVEL_ERROR,
 { E_TMPFILE_FAILED, ERROR_LEVEL_ERROR,
    "Creation of temp file failed" },
 { E_FUNCTION_EXPECTED, ERROR_LEVEL_ERROR,
    "called object is not a function" },
 { E_USING_ERROR, ERROR_LEVEL_ERROR,
-   "'using', 'interrupt' or 'reentrant' must follow a function definiton .'%s'" },
+   "'using', 'interrupt' or 'reentrant' must follow a function definiton.'%s'" },
 { E_SFR_INIT, ERROR_LEVEL_ERROR,
    "Absolute address & initial value both cannot be specified for\n"
    " a 'sfr','sbit' storage class, initial value ignored '%s'" },
 { E_SFR_INIT, ERROR_LEVEL_ERROR,
    "Absolute address & initial value both cannot be specified for\n"
    " a 'sfr','sbit' storage class, initial value ignored '%s'" },
@@ -114,7 +114,7 @@ struct
 { E_INT_REQD, ERROR_LEVEL_ERROR,
    "type must be INT for bit field definition" },
 { E_BITFLD_SIZE, ERROR_LEVEL_ERROR,
 { E_INT_REQD, ERROR_LEVEL_ERROR,
    "type must be INT for bit field definition" },
 { E_BITFLD_SIZE, ERROR_LEVEL_ERROR,
-   "bit field size greater than 16 . assuming 16" },
+   "bit field size greater than 16. assuming 16" },
 { W_TRUNCATION, ERROR_LEVEL_WARNING,
    "high order truncation might occur" },
 { E_CODE_WRITE, ERROR_LEVEL_ERROR,
 { W_TRUNCATION, ERROR_LEVEL_WARNING,
    "high order truncation might occur" },
 { E_CODE_WRITE, ERROR_LEVEL_ERROR,
@@ -226,7 +226,7 @@ struct
 { E_OP_UNKNOWN_SIZE, ERROR_LEVEL_ERROR,
    "unknown size for operand" },
 { W_LONG_UNSUPPORTED, ERROR_LEVEL_WARNING,
 { E_OP_UNKNOWN_SIZE, ERROR_LEVEL_ERROR,
    "unknown size for operand" },
 { W_LONG_UNSUPPORTED, ERROR_LEVEL_WARNING,
-   "'%s' 'long' not supported , declared as 'int' ." },
+   "'%s' 'long' not supported , declared as 'int'." },
 { E_LITERAL_GENERIC, ERROR_LEVEL_ERROR,
     //"illegal cast of LITERAL value to 'generic' pointer: assuming 'xdata' pointer" },
     "illegal cast of LITERAL value to 'generic' pointer" },
 { E_LITERAL_GENERIC, ERROR_LEVEL_ERROR,
     //"illegal cast of LITERAL value to 'generic' pointer: assuming 'xdata' pointer" },
     "illegal cast of LITERAL value to 'generic' pointer" },
@@ -293,7 +293,7 @@ struct
 { W_UNKNOWN_FEXT, ERROR_LEVEL_WARNING,
    "don't know what to do with file '%s'. file extension unsupported" },
 { W_TOO_MANY_SRC, ERROR_LEVEL_WARNING,
 { W_UNKNOWN_FEXT, ERROR_LEVEL_WARNING,
    "don't know what to do with file '%s'. file extension unsupported" },
 { W_TOO_MANY_SRC, ERROR_LEVEL_WARNING,
-   "cannot compile more than one source file . file '%s' ignored" },
+   "cannot compile more than one source file. file '%s' ignored" },
 { I_CYCLOMATIC, ERROR_LEVEL_INFO,
    "function '%s', # edges %d , # nodes %d , cyclomatic complexity %d" },
 { E_DIVIDE_BY_ZERO, ERROR_LEVEL_ERROR,
 { I_CYCLOMATIC, ERROR_LEVEL_INFO,
    "function '%s', # edges %d , # nodes %d , cyclomatic complexity %d" },
 { E_DIVIDE_BY_ZERO, ERROR_LEVEL_ERROR,
@@ -374,6 +374,12 @@ struct
     "if-statement condition always true, if-statement not generated" },
 { E_PARAM_NAME_OMITTED, ERROR_LEVEL_ERROR,
     "in function %s: name omitted for parameter %d" },
     "if-statement condition always true, if-statement not generated" },
 { E_PARAM_NAME_OMITTED, ERROR_LEVEL_ERROR,
     "in function %s: name omitted for parameter %d" },
+{ W_NO_FILE_ARG_IN_C1, ERROR_LEVEL_WARNING,
+    "only standard input is compiled in c1 mode. file '%s' ignored" },
+{ E_NEED_OPT_O_IN_C1, ERROR_LEVEL_ERROR,
+    "must specify assembler file name with -o in c1 mode" },
+{ W_ILLEGAL_OPT_COMBINATION, ERROR_LEVEL_WARNING,
+    "illegal combination of options (--c1mode, -E, -S -c)" },
 };
 
 /*
 };
 
 /*
index fcd04ea873b4d08b0ea4eaa3bf66a39ba70cada7..ce20b85343400db201487adc2a1e763c9d688a28 100644 (file)
@@ -175,6 +175,9 @@ SDCCERR - SDCC Standard error handler
 #define W_CAST_STRUCT_PTR 157 /* pointer to different structure types */
 #define W_IF_ALWAYS_TRUE 158
 #define E_PARAM_NAME_OMITTED 159
 #define W_CAST_STRUCT_PTR 157 /* pointer to different structure types */
 #define W_IF_ALWAYS_TRUE 158
 #define E_PARAM_NAME_OMITTED 159
+#define W_NO_FILE_ARG_IN_C1 160
+#define E_NEED_OPT_O_IN_C1 161
+#define W_ILLEGAL_OPT_COMBINATION 162
 
 /** Describes the maximum error level that will be logged.  Any level
  *  includes all of the levels listed after it.
 
 /** Describes the maximum error level that will be logged.  Any level
  *  includes all of the levels listed after it.