fixed bug #480712
authorjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 12 Nov 2001 10:14:26 +0000 (10:14 +0000)
committerjohanknol <johanknol@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 12 Nov 2001 10:14:26 +0000 (10:14 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1573 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/SDCCsymt.c
src/mcs51/gen.c

index afedc3e53ce77719f6e3e7e93bd23e0b8de3c4de..ab5d588e6327171b5a9e9898b64b286997384a00 100644 (file)
@@ -1582,10 +1582,12 @@ aggregateToPointer (value * val)
          DCL_TYPE (val->type) = PPOINTER;
          break;
        case S_FIXED:
+         if (SPEC_OCLS(val->etype)) {
            DCL_TYPE(val->type)=PTR_TYPE(SPEC_OCLS(val->etype));
-
-         if (TARGET_IS_DS390)
-           {
+         } else {
+           // this should not happen
+           fprintf (stderr, "wild guess about storage type\n");
+           if (TARGET_IS_DS390) {
              /* The AUTO and REGISTER classes should probably
               * also become generic pointers, but I haven't yet
               * devised a test case for that.
@@ -1593,9 +1595,10 @@ aggregateToPointer (value * val)
              DCL_TYPE (val->type) = GPOINTER;
              break;
            }
-         if (options.model==MODEL_LARGE) {
-           DCL_TYPE (val->type) = FPOINTER;
-           break;
+           if (options.model==MODEL_LARGE) {
+             DCL_TYPE (val->type) = FPOINTER;
+             break;
+           }
          }
          break;
        case S_AUTO:
index ca41f6c742605f97b3776dae3716bb1ff32983fa..1324289e693457ba7b464e50dd57fd7c468f2e73 100644 (file)
@@ -2626,6 +2626,8 @@ genRet (iCode * ic)
 {
   int size, offset = 0, pushed = 0;
 
+  D(emitcode (";", "genRet"));
+
   /* if we have no return value then
      just generate the "ret" */
   if (!IC_LEFT (ic))