GMP 5.0.5 build fails with tcc due to x86_64 asm (unknown register...)

Torbjorn Granlund tg at
Tue Jun 19 15:11:55 CEST 2012

Vincent Lefevre <vincent at> writes:

  The GMP 5.0.5 build fails with tcc 0.9.25 on a Debian/unstable
  amd64 (x86_64) machine:
  make[2]: Entering directory `/home/vlefevre/gmp-5.0.5/mpn'
  /home/vlefevre/dash/bin/dash ../libtool --mode=compile --tag=CC ../mpn/m4-ccas --m4="m4" tcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo add_n | sed 's/_$//'`      `test -f 'add_n.asm' || echo './'`add_n.asm
  libtool: compile:  ../mpn/m4-ccas --m4=m4 tcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_add_n add_n.asm  -DPIC -o .libs/add_n.o
  m4  -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_add_n -DPIC add_n.asm >tmp-add_n.s
   tcc -c -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_add_n tmp-add_n.s -DPIC -o .libs/add_n.o
  tmp-add_n.s:81: error: unknown register
  The line is:
          bt      $0, %r8                 
  but if I remove this line, I get:
  tst.s:82: error: unknown opcode 'jrcxz'
  for the line:
          jrcxz   Llt4
  It seems that tcc has a very limited asm support (perhaps only 32-bit
  x86?). This should be tested in configure.
I am not sure we can win this race, where ever worse compilers pop up.
If people play with such a compiler, isn't reasonable to assume they can
interpret errors such as the ones above?  Would they be helped by an
error message from GMP's configure:

 "Sorry, assembler invoked by 'mce' cannot assembly the any instruction
  and doesn't recognise any register names"

(Here 'mce' is the mis-compiles-everything compiler.)


More information about the gmp-bugs mailing list