[comp.sys.amiga] Manx C - large function bug?

svermeulen%Janus.MRC.AdhocNet.CA@UNCAEDU.BITNET (Steve Vermeulen) (09/16/88)

>From: "Flynn D. Fishman" <fdfishman@watcgl.waterloo.edu>
>Subject: Large Program's Programming Problems (Manx Difficulties)
>
>Hi,
>I have a problem that has been bugging me lately
>
>This problem crops up in different places at different times, and can be
>removed by adding or removing a line of code, (but then it sometimes goes
>else where).
>

Flynn,

   Do you have a function that is quite large, say 700 lines of code?
   Is this the place that adding/removing the code line summons/dismisses
   the GURU (or malfunction)?

   The reason I ask this is recently I was stonewalled by either an
   odd-address or illegal-instruction GURU when I was adding "a few
   more lines" to a monster routine (about 1100 lines).
   The only solution I found to
   this problem was to hack chunks out of the monster, creating a
   smaller monster and a new set of functions (in a separate object
   module - this may also be important).

   Among the things that I tried (I was using MANX 3.4a in small-code
   and small-data mode) was to recompile under large code, large data,
   and large code+data.  I never tried the 32 bit int switch though.
   I also tried rearraging my object module linking orders a bit (I was
   using overlays throughout all this).  All of this had no effect on
   the GURU.

   I also tried switching to 3.6a and tried out its various code/data
   modules with the same GURU summoning tendencies.

   I also looked at the sizes of the various object modules and the
   sizes reported by the linker and nothing appeared to indicate the
   extra code lines were pushing something accross a 64K (or 32K) boundary.

   One other point: the monster routine was essentially a very large switch
   statement - is this the case for your problem area?


>FDFISHMAN (Flynn D. Fishman) @ WATCGL (but you can call me Flynn)




                      Stephen Vermeulen
                      Author: Express Paint
                      Chairman: AMUC.