[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-gnubg] gcc 4.0 patch for 0.14.3
From: |
Russ Allbery |
Subject: |
[Bug-gnubg] gcc 4.0 patch for 0.14.3 |
Date: |
Sun, 15 Jan 2006 21:37:14 -0800 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) XEmacs/21.4.17 (linux) |
My guess is that this is already in CVS for 0.15, but just in case.
0.14.3 needed the following modifications to build with gcc 4.0.
--- gnubg-0.14.3.orig/eval.c
+++ gnubg-0.14.3/eval.c
@@ -798,7 +798,11 @@
if( !fstat( h, &st ) &&
( p = mmap( NULL, st.st_size, PROT_READ | PROT_WRITE,
MAP_PRIVATE, h, 0 ) ) ) {
- ( (float *) p ) += 2; /* skip magic number and version */
+ /* gcc 4 doesn't support casts as lvalues.
+ -- rra, 2006-01-14 */
+ float *pf = p;
+ pf += 2; /* skip magic number and version */
+ p = pf;
fReadWeights =
( p = NeuralNetCreateDirect( &nnContact, p ) ) &&
( p = NeuralNetCreateDirect( &nnRace, p ) ) &&
--- gnubg-0.14.3.orig/rollout.c
+++ gnubg-0.14.3/rollout.c
@@ -219,7 +219,7 @@
nPermutationSeed = n;
}
-static int nSkip;
+int nSkip;
static int RolloutDice( int iTurn, int iGame, int cGames,
int fInitial,
--- gnubg-0.14.3.orig/lib/neuralnet.c
+++ gnubg-0.14.3/lib/neuralnet.c
@@ -385,14 +385,20 @@
return 0;
}
extern void *NeuralNetCreateDirect( neuralnet *pnn, void *p ) {
-
- pnn->cInput = *( ( (int *) p )++ );
- pnn->cHidden = *( ( (int *) p )++ );
- pnn->cOutput = *( ( (int *) p )++ );
- pnn->nTrained = *( ( (int *) p )++ );
+ /* gcc 4 doesn't support casts as lvalues. -- rra, 2006-01-14 */
+ int *pi;
+ float *pf;
+
+ pi = p;
+ pnn->cInput = *( pi++ );
+ pnn->cHidden = *( pi++ );
+ pnn->cOutput = *( pi++ );
+ pnn->nTrained = *( pi++ );
+ p = pi;
pnn->fDirect = TRUE;
- pnn->rBetaHidden = *( ( (float *) p )++ );
- pnn->rBetaOutput = *( ( (float *) p )++ );
+ pf = p;
+ pnn->rBetaHidden = *( pf++ );
+ pnn->rBetaOutput = *( pf++ );
if( pnn->cInput < 1 || pnn->cHidden < 1 || pnn->cOutput < 1 ||
pnn->nTrained < 0 || pnn->rBetaHidden <= 0.0 ||
@@ -402,14 +408,15 @@
return NULL;
}
- pnn->arHiddenWeight = p;
- ( (float *) p ) += pnn->cInput * pnn->cHidden;
- pnn->arOutputWeight = p;
- ( (float *) p ) += pnn->cHidden * pnn->cOutput;
- pnn->arHiddenThreshold = p;
- ( (float *) p ) += pnn->cHidden;
- pnn->arOutputThreshold = p;
- ( (float *) p ) += pnn->cOutput;
+ pnn->arHiddenWeight = pf;
+ pf += pnn->cInput * pnn->cHidden;
+ pnn->arOutputWeight = pf;
+ pf += pnn->cHidden * pnn->cOutput;
+ pnn->arHiddenThreshold = pf;
+ pf += pnn->cHidden;
+ pnn->arOutputThreshold = pf;
+ pf += pnn->cOutput;
+ p = pf;
pnn->savedBase = malloc( pnn->cHidden * sizeof( float ) );
pnn->savedIBase = malloc( pnn->cInput * sizeof( float ) );
--
Russ Allbery (address@hidden) <http://www.eyrie.org/~eagle/>
- [Bug-gnubg] gcc 4.0 patch for 0.14.3,
Russ Allbery <=