* src/SDCCast.h: replaced AST_LIT_VALUE with AST_FLOAT_VALUE and
AST_ULONG_VALUE
* src/SDCCast.c (decorateType): improved optimization of tri-op
+ * src/SDCCerr.c (vwerror, setWError),
+ * src/SDCCerr.h,
+ * src/SDCCmain.c (parseCmdLine): added option --Werror to treat all
+ warnings as errors, thanks Stas Sergeev for PATCH 1813211
2007-10-13 Maarten Brock <sourceforge.brock AT dse.nl>
}
if ((ErrTab[errNum].errType >= _SDCCERRG.logLevel) && (!_SDCCERRG.disabled[errNum])) {
- if ( ErrTab[errNum].errType == ERROR_LEVEL_ERROR )
+ if ( ErrTab[errNum].errType == ERROR_LEVEL_ERROR || _SDCCERRG.werror )
fatalError++ ;
if ( filename && lineno ) {
break;
case ERROR_LEVEL_WARNING:
case ERROR_LEVEL_PEDANTIC:
- fprintf(_SDCCERRG.out, "warning %d: ", errNum);
+ if (_SDCCERRG.werror)
+ fprintf(_SDCCERRG.out, "error %d: ", errNum);
+ else
+ fprintf(_SDCCERRG.out, "warning %d: ", errNum);
break;
case ERROR_LEVEL_INFO:
fprintf(_SDCCERRG.out, "info %d: ", errNum);
if ((errNum < MAX_ERROR_WARNING) && (ErrTab[errNum].errType <= ERROR_LEVEL_WARNING))
_SDCCERRG.disabled[errNum] = 1;
}
+
+/*
+-------------------------------------------------------------------------------
+Set the flag to treat warnings as errors
+-------------------------------------------------------------------------------
+*/
+
+void setWError (int flag)
+{
+ _SDCCERRG.werror = flag;
+}
ERROR_LOG_LEVEL logLevel;
FILE *out;
int style; /* 1=MSVC */
+ int werror; /* treat the warnings as errors */
char disabled[MAX_ERROR_WARNING]; /* 1=warning disabled*/
};
void setWarningDisabled (int errNum) ;
+/*
+-------------------------------------------------------------------------------
+Set the flag to treat warnings as errors
+-------------------------------------------------------------------------------
+*/
+void setWError (int flag);
+
#endif
#define OPTION_NO_LOOP_IND "--noinduction"
#define OPTION_LESS_PEDANTIC "--less-pedantic"
#define OPTION_DISABLE_WARNING "--disable-warning"
+#define OPTION_WERROR "--Werror"
#define OPTION_NO_GCSE "--nogcse"
#define OPTION_SHORT_IS_8BITS "--short-is-8bits"
#define OPTION_NO_XINIT_OPT "--no-xinit-opt"
{ 0, "--nostdinc", &options.nostdinc, "Do not include the standard include directory in the search path" },
{ 0, OPTION_LESS_PEDANTIC, NULL, "Disable some of the more pedantic warnings" },
{ 0, OPTION_DISABLE_WARNING, NULL, "<nnnn> Disable specific warning" },
+ { 0, OPTION_WERROR, NULL, "Treat the warnings as errors" },
{ 0, "--debug", &options.debug, "Enable debugging symbol output" },
{ 0, "--cyclomatic", &options.cyclomatic, "Display complexity of compiled functions" },
{ 0, OPTION_STD_C89, NULL, "Use C89 standard only" },
continue;
}
+ if (strcmp (argv[i], OPTION_WERROR) == 0)
+ {
+ setWError(1);
+ addSet(&preArgvSet, Safe_strdup("-Werror"));
+ continue;
+ }
+
if (strcmp (&argv[i][1], OPTION_SHORT_IS_8BITS) == 0)
{
options.shortis8bits=1;