From 4d711df34233a47f093f6d6a3e8840b17d577887 Mon Sep 17 00:00:00 2001 From: johanknol Date: Wed, 6 Mar 2002 16:13:50 +0000 Subject: [PATCH] some minor improvements git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1992 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCC.y | 6 ++++++ src/SDCCsymt.c | 3 ++- src/avr/gen.c | 4 ++++ src/ds390/gen.c | 10 +++++++--- src/mcs51/gen.c | 4 ++++ src/pic/gen.c | 11 +++++++---- 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/SDCC.y b/src/SDCC.y index 4a7ac6cf..ac4503c4 100644 --- a/src/SDCC.y +++ b/src/SDCC.y @@ -1146,6 +1146,12 @@ abstract_declarator2 // $1 must be a pointer to a function sym_link *p=newLink(); DCL_TYPE(p) = FUNCTION; + if (!$1) { + // ((void (code *) ()) 0) () + $1=newLink(); + DCL_TYPE($1)=CPOINTER; + $$ = $1; + } $1->next=p; } | abstract_declarator2 '(' parameter_type_list ')' { diff --git a/src/SDCCsymt.c b/src/SDCCsymt.c index 09611d19..b19179fc 100644 --- a/src/SDCCsymt.c +++ b/src/SDCCsymt.c @@ -2454,7 +2454,8 @@ sym_link *typeFromStr (char *s) s++; break; default: - werror(E_INTERNAL_ERROR,"typeFromStr"); + werror(E_INTERNAL_ERROR, __FILE__, __LINE__, + "typeFromStr: unknown type"); break; } if (IS_SPEC(r) && usign) { diff --git a/src/avr/gen.c b/src/avr/gen.c index c44c40a2..651dab24 100644 --- a/src/avr/gen.c +++ b/src/avr/gen.c @@ -4588,6 +4588,10 @@ genPointerSet (iCode * ic, iCode *pi) case GPOINTER: genGenPointerSet (right, result, ic, pi); break; + + default: + werror (E_INTERNAL_ERROR, __FILE__, __LINE__, + "genPointerSet: illegal pointer type"); } } diff --git a/src/ds390/gen.c b/src/ds390/gen.c index 21a0d200..95cefb1c 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -9232,10 +9232,10 @@ genFarPointerGet (operand * left, } /*-----------------------------------------------------------------*/ -/* emitcodePointerGet - gget value from code space */ +/* genCodePointerGet - get value from code space */ /*-----------------------------------------------------------------*/ static void -emitcodePointerGet (operand * left, +genCodePointerGet (operand * left, operand * result, iCode * ic, iCode *pi) { int size, offset, dopi=1; @@ -9506,7 +9506,7 @@ genPointerGet (iCode * ic, iCode *pi) break; case CPOINTER: - emitcodePointerGet (left, result, ic, pi); + genCodePointerGet (left, result, ic, pi); break; case GPOINTER: @@ -10178,6 +10178,10 @@ genPointerSet (iCode * ic, iCode *pi) case GPOINTER: genGenPointerSet (right, result, ic, pi); break; + + default: + werror (E_INTERNAL_ERROR, __FILE__, __LINE__, + "genPointerSet: illegal pointer type"); } } diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index c138f123..31f6185f 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -8189,6 +8189,10 @@ genPointerSet (iCode * ic, iCode *pi) case GPOINTER: genGenPointerSet (right, result, ic, pi); break; + + default: + werror (E_INTERNAL_ERROR, __FILE__, __LINE__, + "genPointerSet: illegal pointer type"); } } diff --git a/src/pic/gen.c b/src/pic/gen.c index d75b4a8d..20fc81a2 100644 --- a/src/pic/gen.c +++ b/src/pic/gen.c @@ -7600,9 +7600,9 @@ static void genFarPointerGet (operand *left, } /*-----------------------------------------------------------------*/ -/* pic14_emitcodePointerGet - gget value from code space */ +/* genCodePointerGet - get value from code space */ /*-----------------------------------------------------------------*/ -static void pic14_emitcodePointerGet (operand *left, +static void genCodePointerGet (operand *left, operand *result, iCode *ic) { int size, offset ; @@ -7762,7 +7762,7 @@ static void genPointerGet (iCode *ic) break; case CPOINTER: - pic14_emitcodePointerGet (left,result,ic); + genCodePointerGet (left,result,ic); break; case GPOINTER: @@ -8387,8 +8387,11 @@ static void genPointerSet (iCode *ic) case GPOINTER: genGenPointerSet (right,result,ic); break; - } + default: + werror (E_INTERNAL_ERROR, __FILE__, __LINE__, + "genPointerSet: illegal pointer type"); + } } /*-----------------------------------------------------------------*/ -- 2.30.2