From: johanknol Date: Thu, 3 Apr 2003 09:39:21 +0000 (+0000) Subject: new #pragma LESS_PEDANTIC X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=8ea90db362e7a0e5dfec0cf81e6d047975247750;p=fw%2Fsdcc new #pragma LESS_PEDANTIC git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2470 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 006f8d90..c0c8830f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-04-03 + + * device/lib/_mulint.c (_muluint): new #pragma LESS_PEDANTIC + * src/SDCCopt.c (eBBlockFromiCode): new #pragma LESS_PEDANTIC + * src/SDCCglobl.h (PRAGMA_LESSPEDANTIC): new #pragma LESS_PEDANTIC + * src/SDCC.lex (doPragma): new #pragma LESS_PEDANTIC + * src/SDCCmain.c (parseCmdLine): new #pragma LESS_PEDANTIC + 2003-04-03 Bernhard Held * _decdptr.c: fix return values diff --git a/device/lib/_mulint.c b/device/lib/_mulint.c index 85121bc9..8b4d0255 100644 --- a/device/lib/_mulint.c +++ b/device/lib/_mulint.c @@ -58,6 +58,8 @@ #ifdef _MULINT_ASM_LARGE +#pragma SAVE +#pragma LESS_PEDANTIC unsigned int _muluint (unsigned int a, unsigned int b) // in future: _mulint { @@ -109,6 +111,7 @@ _muluint (unsigned int a, unsigned int b) // in future: _mulint ret _endasm; } +#pragma RESTORE int _mulsint (int a, int b) // obsolete diff --git a/src/SDCC.lex b/src/SDCC.lex index 87ea7762..d8441951 100644 --- a/src/SDCC.lex +++ b/src/SDCC.lex @@ -73,6 +73,7 @@ struct options save_options ; P_STACKAUTO , P_NOJTBOUND , P_NOOVERLAY , + P_LESSPEDANTIC, P_NOGCSE , P_CALLEE_SAVES, P_EXCLUDE , @@ -456,6 +457,9 @@ void doPragma (int op, char *cp) case P_NOOVERLAY: options.noOverlay = 1; break; + case P_LESSPEDANTIC: + options.lessPedantic = 1; + break; case P_CALLEE_SAVES: { int i=0; @@ -546,6 +550,11 @@ int process_pragma(char *s) return 0; } + if (strncmp(cp,PRAGMA_LESSPEDANTIC,strlen(PRAGMA_LESSPEDANTIC)) == 0) { + doPragma(P_LESSPEDANTIC,cp+strlen(PRAGMA_LESSPEDANTIC)); + return 0; + } + if (strncmp(cp,PRAGMA_CALLEESAVES,strlen(PRAGMA_CALLEESAVES)) == 0) { doPragma(P_CALLEE_SAVES,cp+strlen(PRAGMA_CALLEESAVES)); return 0; diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h index df1c7e5a..175aaa2b 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -97,6 +97,8 @@ typedef int bool; #define PRAGMA_EXCLUDE "EXCLUDE" #define PRAGMA_NOIV "NOIV" #define PRAGMA_OVERLAY "OVERLAY" +#define PRAGMA_LESSPEDANTIC "LESS_PEDANTIC" + #define SMALL_MODEL 0 #define LARGE_MODEL 1 #define TRUE 1 diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 708ba0b5..a15d1d6b 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -114,7 +114,7 @@ char buffer[PATH_MAX * 2]; #define OPTION_NO_LABEL_OPT "--nolabelopt" #define OPTION_NO_LOOP_INV "--noinvariant" #define OPTION_NO_LOOP_IND "--noinduction" -#define OPTION_LESS_PEDANTIC "--lesspedantic" +#define OPTION_LESS_PEDANTIC "--less-pedantic" #define OPTION_NO_GCSE "--nogcse" #define OPTION_SHORT_IS_8BITS "--short-is-8bits" #define OPTION_TINI_LIBID "--tini-libid" diff --git a/src/SDCCopt.c b/src/SDCCopt.c index 374c34d2..33c226d3 100644 --- a/src/SDCCopt.c +++ b/src/SDCCopt.c @@ -886,16 +886,18 @@ eBBlockFromiCode (iCode * ic) } - // this is a good place to check missing return values - if (currFunc) { - if (!IS_VOID(currFunc->type->next)) { - eBBlock *bp; - // make sure all predecessors of the last block end in a return - for (bp=setFirstItem(ebbs[saveCount-1]->predList); - bp; - bp=setNextItem(ebbs[saveCount-1]->predList)) { - if (bp->ech->op != RETURN) { - werror (W_VOID_FUNC, currFunc->name); + if (!options.lessPedantic) { + // this is a good place to check missing return values + if (currFunc) { + if (!IS_VOID(currFunc->type->next)) { + eBBlock *bp; + // make sure all predecessors of the last block end in a return + for (bp=setFirstItem(ebbs[saveCount-1]->predList); + bp; + bp=setNextItem(ebbs[saveCount-1]->predList)) { + if (bp->ech->op != RETURN) { + werror (W_VOID_FUNC, currFunc->name); + } } } }