GMP-5.0.0 problems with gcd_1.asm on Apple with fixes

Torbjorn Granlund tg at
Tue Jan 12 22:59:42 CET 2010

Thanks Philip for your feedback!

  >> Fix #1: this error vanishes if the trailing zero table label "L(table)" is changed to "tz_table" (2 places).
What is the logic behind this change?

I worry about this LEA reference.

If you compile a corresponding C file, with a reference to a

  const static int foo[10] = {1,2,3,4,5,6,7,8,9,10};

using both PIC and non-PIC code, what does the refenece look like?

  2) After fix #1, "make check" fails in "t-fat" with a segmentation fault at the call to test "mpn_gcd_1".
  >> Fix #2: the fix for this error was suggested in the file "redc_1.asm", where the stack pointer
                    needs to be aligned for a secondary call. Adding the instruction
  		sub	$8, %rsp                   C maintain ABI required rsp alignment
  just before the instruction
  		CALL(	mpn_modexact_1_odd)
  which is then followed by
  		add	$8, %rsp
  fixes the fault and "make check" runs without errors.

  3) (Bonus code improvement!) Near the start of the routine, the instructions
  		mov	%r8, %r10
  		shr	R8(%rcx), %r10
  can be removed. r10 is not used before it is overwritten elsewhere.
You're right!  (My flow analysis was apparently somewhat simple-minded
when I wrote this file.)


More information about the gmp-bugs mailing list