(also added new stack plus clone- and copyAndFreeSDCCERRG())
* have #pragma less_pedantic set the errorlevel to WARNING
(fixes #
1117001)
* (cloneOptimize) : fixed wrong malloc's size
* support/Util/SDCCerr.[ch] : made SDCCERRG globally accessible to
facilitate correct handling of #pragma (save|restore)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3674
4a8a32a2-be11-0410-ad9d-
d568d2c75423
-2004-02-03 Maarten Brock <sourceforge.brock AT dse.nl>
+2005-02-09 Raphael Neider <rneider AT web.de>
+
+ * src/SDCC.lex(doPragma) : save and restore warning options as well
+ (also added new stack plus clone- and copyAndFreeSDCCERRG())
+ * have #pragma less_pedantic set the errorlevel to WARNING
+ (fixes #1117001)
+ * (cloneOptimize) : fixed wrong malloc's size
+ * support/Util/SDCCerr.[ch] : made SDCCERRG globally accessible to
+ facilitate correct handling of #pragma (save|restore)
+
+2005-02-09 Maarten Brock <sourceforge.brock AT dse.nl>
* src/mcs51/gen.c: removed non-standard C nameless struct/union
* src/mcs51/gen.c: removed non-standard C nameless struct/union
STACK_DCL(options_stack, struct options *, SAVE_RESTORE_SIZE)
STACK_DCL(optimize_stack, struct optimize *, SAVE_RESTORE_SIZE)
STACK_DCL(options_stack, struct options *, SAVE_RESTORE_SIZE)
STACK_DCL(optimize_stack, struct optimize *, SAVE_RESTORE_SIZE)
+STACK_DCL(SDCCERRG_stack, struct SDCCERRG *, SAVE_RESTORE_SIZE)
/*
* cloneXxx functions should be updated every time a new set is
/*
* cloneXxx functions should be updated every time a new set is
{
struct optimize *new_opt;
{
struct optimize *new_opt;
- new_opt = Safe_malloc(sizeof (struct options));
+ new_opt = Safe_malloc(sizeof (struct optimize));
/* clone scalar values */
*new_opt = *opt;
/* clone scalar values */
*new_opt = *opt;
+static struct SDCCERRG *cloneSDCCERRG (struct SDCCERRG *val)
+{
+ struct SDCCERRG *new_val;
+
+ new_val = Safe_malloc(sizeof (struct SDCCERRG));
+
+ /* clone scalar values */
+ *new_val = *val;
+
+ return new_val;
+}
+
static void copyAndFreeOptions(struct options *dest, struct options *src)
{
/* delete dest sets */
static void copyAndFreeOptions(struct options *dest, struct options *src)
{
/* delete dest sets */
/* not implemented yet: */
/* deleteSet(&dest->olaysSet); */
/* not implemented yet: */
/* deleteSet(&dest->olaysSet); */
*dest = *src;
Safe_free(src);
*dest = *src;
Safe_free(src);
static void copyAndFreeOptimize(struct optimize *dest, struct optimize *src)
{
static void copyAndFreeOptimize(struct optimize *dest, struct optimize *src)
{
+ /* copy src to dest */
+ *dest = *src;
+
+ Safe_free(src);
+}
+
+static void copyAndFreeSDCCERRG(struct SDCCERRG *dest, struct SDCCERRG *src)
+{
+ /* copy src to dest */
*dest = *src;
Safe_free(src);
*dest = *src;
Safe_free(src);
{
STACK_PUSH(options_stack, cloneOptions(&options));
STACK_PUSH(optimize_stack, cloneOptimize(&optimize));
{
STACK_PUSH(options_stack, cloneOptions(&options));
STACK_PUSH(optimize_stack, cloneOptimize(&optimize));
+ STACK_PUSH(SDCCERRG_stack, cloneSDCCERRG(&_SDCCERRG));
{
struct options *optionsp;
struct optimize *optimizep;
{
struct options *optionsp;
struct optimize *optimizep;
+ struct SDCCERRG *sdccerrgp;
optionsp = STACK_POP(options_stack);
copyAndFreeOptions(&options, optionsp);
optimizep = STACK_POP(optimize_stack);
copyAndFreeOptimize(&optimize, optimizep);
optionsp = STACK_POP(options_stack);
copyAndFreeOptions(&options, optionsp);
optimizep = STACK_POP(optimize_stack);
copyAndFreeOptimize(&optimize, optimizep);
+
+ sdccerrgp = STACK_POP(SDCCERRG_stack);
+ copyAndFreeSDCCERRG(&_SDCCERRG, sdccerrgp);
case P_LESSPEDANTIC:
options.lessPedantic = 1;
case P_LESSPEDANTIC:
options.lessPedantic = 1;
+ setErrorLogLevel(ERROR_LEVEL_WARNING);
break;
case P_CALLEE_SAVES:
break;
case P_CALLEE_SAVES:
#define DEFAULT_ERROR_OUT stderr
#endif
#define DEFAULT_ERROR_OUT stderr
#endif
-static struct {
- ERROR_LOG_LEVEL logLevel;
- FILE *out;
- int style; /* 1=MSVC */
- char disabled[MAX_ERROR_WARNING]; /* 1=warning disabled*/
-} _SDCCERRG;
+struct SDCCERRG _SDCCERRG;
extern char *filename ;
extern int lineno ;
extern char *filename ;
extern int lineno ;
typedef enum _ERROR_LOG_LEVEL ERROR_LOG_LEVEL;
typedef enum _ERROR_LOG_LEVEL ERROR_LOG_LEVEL;
+struct SDCCERRG {
+ ERROR_LOG_LEVEL logLevel;
+ FILE *out;
+ int style; /* 1=MSVC */
+ char disabled[MAX_ERROR_WARNING]; /* 1=warning disabled*/
+};
+
+extern struct SDCCERRG _SDCCERRG;
+
/** Sets the maximum error level to log.
See MAX_ERROR_LEVEL. The default is ERROR_LEVEL_ALL.
*/
/** Sets the maximum error level to log.
See MAX_ERROR_LEVEL. The default is ERROR_LEVEL_ALL.
*/