On Mon, 20 Dec 1999, Thomas David Rivers wrote:

!>> FreeBSD(root)/tmp %cc -O foo.c -o foo.o -c
!>> cc: Internal compiler error: program cc1 got fatal signal 11
!>> 
!>> 
!>> 
!>> static void getsig11(parfree,dbl,lambda)
!>>  long parfree;
!>>  double *dbl;
!>>  double *lambda;
!>> {
!>>     long i, j;
!>>     j = -1;
!>>     for(i = 0; i < parfree; i++)  {
!>>        j += i+1;
!>>        dbl[j] *= (1.0 + *lambda);
!>>        }
!>>     return;
!>> }
!>> 
!>> 
!>>    Yes, the algorithm looks funny, but is correct. The program will
!>> compile correctly if the 'j += i+1;' is changed to 'j = i+1;' or if
!>> the variable 'lambda' is changed from a pointer to an actual value.
!>> 
!>>    Anyone want to take a stab at this? I'm not a big compiler
!>> person myself... (Dave, you there?).
!>
!>  Yes - I'm here :-)
!>
!>  Typically - signal 11 problems from GNU's front-end are hardware 
!> memory issues....
!>
!>  I will add that a quick test on a 3.3 system compiles this just
!> fine (Systems/C compiles it as well.)
!>
!>  I would suspect hardware problems first.
!>
!>  As I have learned from painful experience, *always* use ECC or at least
!> parity memory...
!>
!>      - Dave R. -

        This seems to only be an issue if you're compiling with optimization.
  I *think* it's because the compiler tries to make `j' a register. If you
  explicitly declare `j' a volatile, you should not get this.

  Is this correct?

  Bosko.

 ...... . . . . .  .   .    .      .        . . .
 . Bosko Milekic  --  [EMAIL PROTECTED]   .   .
 .       .      .      .    .  . . . . ......   .
 . WWW: http://pages.infinit.net/bmilekic/      . 
 ................................................
 



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to