On Thu, 23 Jul 1998, Alastair Reid wrote:
> I've not heard of this problem before but I've noticed that the 
> latest gcc/egcs are much fussier than gcc 2.7.2 (which is what most
> people seem to use).  Can you mail us the output of these commands
> (or appropriate equivalents):
> 
> gcc -v
gcc version 2.7.2.2+myc1

> uname -a
NetBSD scdesantis.ne.mediaone.net 1.3.2 NetBSD 1.3.2 (GHOST-PRIEST) #1:
Tue Jul 14 21:45:20 EDT 1998
[EMAIL PROTECTED]:/home/xiamin/building/usr/src/sys/arch/mac68k/compile/GHOST-PRIEST
 mac68k

> cat hugs/src/version.h
/* --------------------------------------------------------------------------
 * Version number
 * ------------------------------------------------------------------------*/

/* Is this a major release or not? */
#define MAJOR_RELEASE 1

/* Define this as a string (up to 13 characters) uniquely identifying the 
 * current version.
 * Major releases from Nottingham/Yale are of the form "<month> <year>"
 * Minor releases from Nottingham/Yale are of the form "Version YYMMDD"
 * Anyone else should use a different format to avoid confusion.    
 */
#if MAJOR_RELEASE
#define HUGS_VERSION "  June 1998   "
#else
#define HUGS_VERSION "Version 980610"
#endif


> 
> Also, you'll find the code that creates global registers in prelude.h
> - you could try commenting it out or deleting it.  You'll take a
> performance hit if you do this but I'm not sure how much (does a
> factor of 2 sound right, Mark?)
I'll give that a try, thanks.

> 
> 
> Alastair
> 
> Here's the code in prelude.h that you might need to whack on:
> 
> /*---------------------------------------------------------------------------
>  * Optimisations:
>  *-------------------------------------------------------------------------*/
> 
> #ifdef  __GNUC__                      /* look for GCC 2.x extensions     */
> #if     __GNUC__ >= 2 && !defined(NeXT)       /* NeXT cc lies and says it's 2.x  */
> 
> /* WARNING: if you use the following optimisations to assign registers for
>  * particular global variables, you should be very careful to make sure that
>  * storage(RESET) is called after a longjump (usually resulting from an error
>  * condition) and before you try to access the heap.  The current version of
>  * main deals with this using everybody(RESET) at the head of the main read,
>  * eval, print loop
>  */
> 
> #ifdef  m68k                          /* global registers on an m68k     */
> #define GLOBALfst     asm("a4")
> #define GLOBALsnd     asm("a5")
> #define GLOBALsp      asm("a3")
> #endif
> 
> #ifdef  sparc                         /* global registers on a sparc     */
> /* sadly, although the gcc documentation suggests that the following reg   */
> /* assignments should be ok, experience shows (at least on Suns) that they */
> /* are not -- it seems that atof() and friends spoil things.             */
> /*#define GLOBALfst   asm("g5")*/
> /*#define GLOBALsnd   asm("g6")*/
> /*#define GLOBALsp    asm("g7")*/
> #endif /* sparc */
> 
> #endif
> #endif /* defined(__GNUC__) */
> 
> 

-Simon Raahauge DeSantis

Reply via email to