new #pragma LESS_PEDANTIC
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 3 Apr 2003 09:39:21 +0000 (09:39 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 3 Apr 2003 09:39:21 +0000 (09:39 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2470 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/lib/_mulint.c
src/SDCC.lex
src/SDCCglobl.h
src/SDCCmain.c
src/SDCCopt.c

index 006f8d90676cd37bfaf30247046951231cdccbbd..c0c8830fc14da12aa0fac0105fef7179a01758e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+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
index 85121bc9e108887efe3f92c8c02d9814f1a9f97c..8b4d0255bc339e359052d533e96c9aa6baae24f3 100644 (file)
@@ -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
index 87ea7762a79846a8c2fb6a175e27bde3d9eaee80..d844195103eb346ea77685273834fc42976be36e 100644 (file)
@@ -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;
index df1c7e5a874862b5d449f7796f45c7442438caa2..175aaa2bdde1ea5d4f860b1b245fffde04d4665a 100644 (file)
@@ -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
index 708ba0b5d09f87f8962237d24be9c5e4d326ed17..a15d1d6b7ee089f2874918f1cd9f58006b9dc362 100644 (file)
@@ -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"
index 374c34d29ee904546a9e3bb7f082e0bd72927628..33c226d334bc4d508a06fd30ab31b40c71017766 100644 (file)
@@ -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);
+         }
        }
       }
     }