+2003-04-03 <johan@balder>
+
+ * 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 <bernhard@bernhardheld.de>
* _decdptr.c: fix return values
#ifdef _MULINT_ASM_LARGE
+#pragma SAVE
+#pragma LESS_PEDANTIC
unsigned int
_muluint (unsigned int a, unsigned int b) // in future: _mulint
{
ret
_endasm;
}
+#pragma RESTORE
int
_mulsint (int a, int b) // obsolete
P_STACKAUTO ,
P_NOJTBOUND ,
P_NOOVERLAY ,
+ P_LESSPEDANTIC,
P_NOGCSE ,
P_CALLEE_SAVES,
P_EXCLUDE ,
case P_NOOVERLAY:
options.noOverlay = 1;
break;
+ case P_LESSPEDANTIC:
+ options.lessPedantic = 1;
+ break;
case P_CALLEE_SAVES:
{
int i=0;
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;
#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
#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"
}
- // 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);
+ }
}
}
}