GNU MP - PPC 440 build observation

morten simonsen ms at protelevision.com
Sat Nov 26 11:59:51 CET 2011


I have build GNU mp 5.0.2, cross-compiling for PPC on an Intel machine, with 
the following command:

  sudo ./configure CC="/opt/eldk41/usr/bin/ppc_4xx-gcc" --host=none
  make
  make check

The following program (pseudo-excerpt as much of it relates to a pool of 
initialized mpf_t's - used as local variables in functions):

#include <gmp.h>

void function(const double *x, const double *y) {
  mpf_t *kw = (mpf_t*) malloc(2*sizeof(mpf_t));
  mpf_t *a  = &(kw[0]);
  mpf_t *b  = &(kw[1]);
  int   i;

  mpf_init(*a);
  mpf_init(*b);

  for(i=0;i<100;i++) {
  
    mpf_set_d(*a,*x);

    // different stuff

  }

  for(i=0;i<100;i++) {
  
    mpf_set_d(*a,*y);

    // different stuff

  }

  mpf_free(*a);
  mpf_free(*b);
  free(kw);
}

main() {
  double x = 1.;
  double y = 0.21;
  
  mpf_set_default_prec(128);
  function(&x,&y);
}

I observe that the first mpf_set_d-assignments to *a does not give *a the value 
of *x, but the the mpf_set_d-assignments in the second for loop does indeed 
give *a the values of *y. *a is used for further calculations in both for 
loops, hence I do not think that it is compiler optimization.

I use the same code on a intel host environment where it runss as expected - 
might this be an crosscomnpiling issue?

I do not have much experience (yet) with the GNU MP, but it has been very 
useful on my host - now I just wish to run it on my embedded PPC target.

Anyone having similar experience - and solutions?

Thanks & BR Morten

P.S. tuneup crashes on the target (regretfully I can not build tune on my host 
(linker can not find libgmp.la)


More information about the gmp-discuss mailing list