From eb1ed77fb239b4a1af53773f0257ab904c771ddf Mon Sep 17 00:00:00 2001 From: johanknol Date: Mon, 25 Jun 2001 10:34:29 +0000 Subject: [PATCH] a saver error report git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@942 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCC.y | 12 ++++++------ src/SDCCglobl.h | 1 + src/SDCCsymt.c | 12 ++++++++---- src/SDCCsymt.h | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/SDCC.y b/src/SDCC.y index 63b27ed3..279cb5f5 100644 --- a/src/SDCC.y +++ b/src/SDCC.y @@ -167,7 +167,7 @@ function_definition using_reentrant : using_reentrant_interrupt - | using_reentrant_interrupt using_reentrant { $$ = mergeSpec($1,$2); } + | using_reentrant_interrupt using_reentrant { $$ = mergeSpec($1,$2,"using_reentrant"); } ; using_reentrant_interrupt @@ -480,11 +480,11 @@ declaration_specifiers sym_link *lnk = $2 ; while (lnk && !IS_SPEC(lnk->next)) lnk = lnk->next; - lnk->next = mergeSpec($1,lnk->next); + lnk->next = mergeSpec($1,lnk->next, yytext); $$ = $2 ; } else - $$ = mergeSpec($1,$2); + $$ = mergeSpec($1,$2, yytext); } | type_specifier { $$ = $1; } | type_specifier declaration_specifiers { @@ -494,11 +494,11 @@ declaration_specifiers sym_link *lnk = $2 ; while (lnk && !IS_SPEC(lnk->next)) lnk = lnk->next; - lnk->next = mergeSpec($1,lnk->next); + lnk->next = mergeSpec($1,lnk->next, yytext); $$ = $2 ; } else - $$ = mergeSpec($1,$2); + $$ = mergeSpec($1,$2, yytext); } ; @@ -996,7 +996,7 @@ far_near type_specifier_list : type_specifier - | type_specifier_list type_specifier { $$ = mergeSpec ($1,$2); } + | type_specifier_list type_specifier { $$ = mergeSpec ($1,$2, "type_specifier_list"); } ; parameter_identifier_list diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h index e11160b5..0b403799 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -233,6 +233,7 @@ struct options }; /* forward definition for variables accessed globally */ +extern char *yytext; extern char *currFname; extern char *srcFileName; /* source file name without the extenstion */ extern char *moduleName; /* source file name without path & extension */ diff --git a/src/SDCCsymt.c b/src/SDCCsymt.c index 6c199ee4..ee4bfe42 100644 --- a/src/SDCCsymt.c +++ b/src/SDCCsymt.c @@ -412,7 +412,7 @@ addDecl (symbol * sym, int type, sym_link * p) { if (IS_SPEC (sym->etype) && IS_SPEC (head) && head == tail) { - sym->etype = mergeSpec (sym->etype, head); + sym->etype = mergeSpec (sym->etype, head, sym->name); } else { @@ -525,9 +525,13 @@ void checkTypeSanity(sym_link *etype, char *name) { /* mergeSpec - merges two specifiers and returns the new one */ /*------------------------------------------------------------------*/ sym_link * -mergeSpec (sym_link * dest, sym_link * src) +mergeSpec (sym_link * dest, sym_link * src, char *name) { + if (getenv("DEBUG_mergeSpec")) { + fprintf (stderr, "mergeSpec: \"%s\"\n", name); + } + if (SPEC_NOUN(src)) { if (!SPEC_NOUN(dest)) { SPEC_NOUN(dest)=SPEC_NOUN(src); @@ -536,7 +540,7 @@ mergeSpec (sym_link * dest, sym_link * src) if (getenv("DEBUG_SANITY")) { fprintf (stderr, "mergeSpec: "); } - werror(E_TWO_OR_MORE_DATA_TYPES, yylval.yychar); + werror(E_TWO_OR_MORE_DATA_TYPES, name); } } @@ -548,7 +552,7 @@ mergeSpec (sym_link * dest, sym_link * src) if (getenv("DEBUG_SANITY")) { fprintf (stderr, "mergeSpec: "); } - werror(E_TWO_OR_MORE_STORAGE_CLASSES, yylval.yychar); + werror(E_TWO_OR_MORE_STORAGE_CLASSES, name); } } diff --git a/src/SDCCsymt.h b/src/SDCCsymt.h index 32907da6..a2859937 100644 --- a/src/SDCCsymt.h +++ b/src/SDCCsymt.h @@ -403,7 +403,7 @@ sym_link *newLink (); sym_link *newFloatLink (); structdef *newStruct (char *); void addDecl (symbol *, int, sym_link *); -sym_link *mergeSpec (sym_link *, sym_link *); +sym_link *mergeSpec (sym_link *, sym_link *, char *name); sym_link *cloneSpec (sym_link *); symbol *reverseSyms (symbol *); sym_link *reverseLink (sym_link *); -- 2.47.2