Change dummy variable in mpih-div.c to mpi_limb_t type
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Mon, 16 Dec 2013 10:15:37 +0000 (12:15 +0200)
committerJussi Kivilinna <jussi.kivilinna@iki.fi>
Mon, 16 Dec 2013 10:15:37 +0000 (12:15 +0200)
* mpi/mpih-div.c (_gcry_mpih_mod_1, _gcry_mpih_divmod_1): Change dummy
variable to 'mpi_limb_t' type from 'int'.
--

Patch attempts to fix problem reported by Matthias Wachs:

 while updating our buildbots I got another compile error:

 On a OS X machine:

 Darwin luke.net.in.tum.de 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan
 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64

 /bin/sh ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.
 -I..  -I../src -I../src -I/opt/local/include -I/opt/local/include -g -O2
 -Wall -MT mpih-div.lo -MD -MP -MF .deps/mpih-div.Tpo -c -o mpih-div.lo
 mpih-div.c
 libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../src -I../src
 -I/opt/local/include -I/opt/local/include -g -O2 -Wall -MT mpih-div.lo
 -MD -MP -MF .deps/mpih-div.Tpo -c mpih-div.c  -fno-common -DPIC -o
 .libs/mpih-div.o
 mpih-div.c: In function '_gcry_mpih_mod_1':
 mpih-div.c:183: error: unsupported inline asm: input constraint with a
 matching output constraint of incompatible type!
 make[2]: *** [mpih-div.lo] Error 1
 make[1]: *** [all-recursive] Error 1
 make: *** [all] Error 2

The new x86-64 inline assembly for MPI expects outputs to be limb sized
variables (64-bit), but mpi/mpih-div.c was using 32-bit dummy variable.
Appearently this mismatch between assembly output and variable sizes does not
fail on every platform.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
mpi/mpih-div.c

index 0bddd22..57c1b58 100644 (file)
@@ -48,7 +48,7 @@ _gcry_mpih_mod_1(mpi_ptr_t dividend_ptr, mpi_size_t dividend_size,
 {
     mpi_size_t i;
     mpi_limb_t n1, n0, r;
-    int dummy GCC_ATTR_UNUSED;
+    mpi_limb_t dummy GCC_ATTR_UNUSED;
 
     /* Botch: Should this be handled at all?  Rely on callers? */
     if( !dividend_size )
@@ -396,7 +396,7 @@ _gcry_mpih_divmod_1( mpi_ptr_t quot_ptr,
 {
     mpi_size_t i;
     mpi_limb_t n1, n0, r;
-    int dummy GCC_ATTR_UNUSED;
+    mpi_limb_t dummy GCC_ATTR_UNUSED;
 
     if( !dividend_size )
        return 0;