[comp.sys.amiga.programmer] Is it me or Manx C 5.0c

Ata@system-m.phx.bull.com (John G. Ata) (03/01/91)

Manx knows about this bug but chose not to fix it.  You can get around
this problem by optimizing (-so).  It still exists in 5.0d, but haven't
tried 5.0e yet.

                              John

chucks@pnet51.orb.mn.org (Erik Funkenbusch) (03/03/91)

Ata@system-m.phx.bull.com (John G. Ata) writes:
>Manx knows about this bug but chose not to fix it.  You can get around
>this problem by optimizing (-so).  It still exists in 5.0d, but haven't
>tried 5.0e yet.
>
>                              John


funny, the 5.0e release is just a cc replacement, and it still says 5.0d when
you run it.  wonders will be wonders.

speaking of Aztec 5.0.  I'm trying to write some pure code.  i understand not
to reference any globabl variables such as stdin, stdout, errno, etc.  the old
aztec had a resident startup code, this is missing now, however going through
the supplied startup code i notice many things that are allocated dynamically.
 is this startup code also re-entrant?  i see a problem with the global device
table.  even though the space is allocated dynamically, the reference is still
global.  does this mean i can't use any manx dos routines if i want re-entrant
code?  anyone with some experience, help would be appreciated.

UUCP: {amdahl!tcnet, crash}!orbit!pnet51!chucks
ARPA: crash!orbit!pnet51!chucks@nosc.mil
INET: chucks@pnet51.orb.mn.org

Ata@system-m.phx.bull.com (John G. Ata) (03/04/91)

There is a Manx 5.0e on the Manx BB.  However, after downloading it, it
still prints out "Manx 5.0d September 30, 1990" with the only change
being the date from Sep 28 to Sep 30.  It does not fix the "too complex"
problem.  This problem has a simple test case where the line:
          name [*cpos] = fname [*cpos]; causes the error.  name and
fname are character arrays and cpos points to an integer.  Doesn't sound
too complex to me, but Manx didn't see it that way.  When I use the -so
option, the problem goes away.  It must be either the -so option, or one
of the optimize options which makes the problem go away.  Not all
optimize options will work, but only a specific one which -so includes.

                    John

bj@cbmvax.commodore.com (Brian Jackson) (03/04/91)

In article <46418@nigel.ee.udel.edu> Ata@system-m.phx.bull.com (John G. Ata) writes:
>There is a Manx 5.0e on the Manx BB.  However, after downloading it, it
>still prints out "Manx 5.0d September 30, 1990" with the only change
>being the date from Sep 28 to Sep 30.  It does not fix the "too complex"
>problem.  This problem has a simple test case where the line:
>          name [*cpos] = fname [*cpos]; causes the error.  name and
>fname are character arrays and cpos points to an integer.  Doesn't sound
>too complex to me, but Manx didn't see it that way.  When I use the -so
>option, the problem goes away.  It must be either the -so option, or one
>of the optimize options which makes the problem go away.  Not all
>optimize options will work, but only a specific one which -so includes.
>
>                    John

I really don't want to play the role of Manx spokesman, here, but they
told me on the phone the other day that the 5.0e1 "fix" fixed *only*
the "shared library with no function arguments" problem and only that
one.  They said that they are working on a release that will "fix all
known bugs".  RSN.  

bj

 -----------------------------------------------------------------------
 | Brian Jackson  Software Engineer, Commodore-Amiga Inc.  GEnie: B.J. |
 | bj@cbmvax.cbm.commodore.com    or  ...{uunet|rutgers}!cbmvax!bj     |
 | "We defy augury"                                                    |
 -----------------------------------------------------------------------
    

cgehman@hubcap.clemson.edu (Corey Gehman) (03/04/91)

Ata@system-m.phx.bull.com (John G. Ata) writes:

>When I use the -so
>option, the problem goes away.  It must be either the -so option, or one
>of the optimize options which makes the problem go away.  Not all
>optimize options will work, but only a specific one which -so includes.

>                    John

Well, my problem didn't get fixed with the -so option.  Here's the
smallest I could convert the problem down to:


#define FABS(x) ((x) < 0.0 ? (0.0 - (x)) : (x))

double test()
{
double i,j;

   return (FABS ( i - j ) + FABS ( i - j ) + FABS ( i - j ));
}


Here's my error messages with serveral different options:

1> cc test
Aztec C 5.0b Jun 18 1990   (C) 1990 by Manx Software Systems, Inc.
   return (FABS ( i - j ) + FABS ( i - j ) + FABS ( i - j ));
test.c:8: ERROR 167: expression too complex - use -MR option:


1> cc -mr test
Aztec C 5.0b Jun 18 1990   (C) 1990 by Manx Software Systems, Inc.
   return (FABS ( i - j ) + FABS ( i - j ) + FABS ( i - j ));
test.c:8: ERROR 167: expression too complex - use -MR option:


1> cc -so test
Aztec C 5.0b Jun 18 1990   (C) 1990 by Manx Software Systems, Inc.
}
test.c:8: ERROR 167: expression too complex - use -MR option:

1> cc -mr -so test
Aztec C 5.0b Jun 18 1990   (C) 1990 by Manx Software Systems, Inc.
}
test.c:8: ERROR 167: expression too complex - use -MR option:

I've "fixed" the problem by using a subroutine instead of a macro
but since I often port software from unix to the amiga I don't want
to do that everytime.  I don't know if 5.0d version with the -so
option works or not.  I've ordered a new version but it hasn't got
here yet (I don't want to pay large phone bills OK?).

-- 
-------------------------------------------------------------------------------
| Corey Gehman                  | "you will get to watch the Amiga            |
| cg377170@lion.eng.clemson.edu |     FIREWORKS_DISPLAY mode."                |
| cgehman@hubcap.clemson.edu    |              - Intuition Reference Manual   |

huver@amgraf.UUCP (Huver) (03/06/91)

cgehman@hubcap.clemson.edu (Corey Gehman) wrote:

>Well, my problem didn't get fixed with the -so option.  Here's the
>smallest I could convert the problem down to:
>
>
>#define FABS(x) ((x) < 0.0 ? (0.0 - (x)) : (x))
>
>double test()
>{
>double i,j;
>
>   return (FABS ( i - j ) + FABS ( i - j ) + FABS ( i - j ));
>}
> ...
>
> I've "fixed" the problem by using a subroutine instead of a macro
> but since I often port software from unix to the amiga I don't want
> to do that everytime.  I don't know if 5.0d version with the -so
> option works or not.

Now I'm not picking on you, but for the particular example, do:

	#include <math.h>

	#define FABS(x) fabs(x)

	/* rest of your code */

and it works just fine; in fact I'd change all FABS() to fabs() calls
and forget about the macro form.  The fabs() is a standard UNIX library
function (System V) which, if you're bringing "software from unix",
should've been used by the original code.  Whatever your UNIX, grep fabs
from <math.h> and see.

The Manx bug is quite interesting though.  With 5.0d/e on your posted code
as is, the -f8 (881 code) option generates absolutely no problem whatsoever,
all other -fX options fail.  Looks like a compiler intended for 020/881 as
a standard platform.  :^)


-huver