File ocaml-3.08.3-gcc4.patch of Package ocaml
+- reduce register pressure in bng_ia32.c (thanks to matz)
--- a/otherlibs/num/bng_ia32.c
+++ b/otherlibs/num/bng_ia32.c
@@ -121,7 +121,7 @@
"leal 4(%1), %1 \n\t"
"decl %2 \n\t"
"jnz 1b"
- : "+&r" (a), "+&r" (b), "+&r" (blen), "=m" (out)
+ : "+r" (a), "+r" (b), "+m" (blen), "+r" (out)
: "m" (d)
: "eax", "edx");
}
@@ -164,7 +164,7 @@
"leal 4(%1), %1 \n\t"
"decl %2 \n\t"
"jnz 1b"
- : "+&r" (a), "+&r" (b), "=m" (blen), "=m" (out), "=&r" (tmp)
+ : "+r" (a), "+r" (b), "+m" (blen), "+m" (out), "=&r" (tmp)
: "m" (d)
: "eax", "edx");
}
@@ -210,7 +210,7 @@
"jne 1b \n\t"
"movd %%mm0, %3 \n\t"
"emms"
- : "+&r" (a), "+&r" (b), "+&r" (blen), "+&rm" (carry));
+ : "+r" (a), "+r" (b), "+r" (blen), "+rm" (carry));
}
if (carry == 0 || alen == 0) return carry;
do {
@@ -242,7 +242,7 @@
"jne 1b \n\t"
"movd %%mm0, %3 \n\t"
"emms"
- : "+&r" (a), "+&r" (b), "+&r" (blen), "+&rm" (carry));
+ : "+r" (a), "+r" (b), "+r" (blen), "+rm" (carry));
}
if (carry == 0 || alen == 0) return carry;
do {
@@ -279,7 +279,7 @@
"jne 1b \n\t"
"movd %%mm0, %3 \n\t"
"emms"
- : "+&r" (a), "+&r" (b), "+&r" (blen), "=&rm" (out)
+ : "+r" (a), "+r" (b), "+r" (blen), "=&rm" (out)
: "m" (d));
}
if (alen == 0) return out;
@@ -332,7 +332,7 @@
"jne 1b \n\t"
"movd %%mm0, %3 \n\t"
"emms"
- : "+&r" (a), "+&r" (b), "+&r" (blen), "=&rm" (out)
+ : "+r" (a), "+r" (b), "+r" (blen), "=&rm" (out)
: "m" (d), "m" (bias1), "m" (bias2));
out = ~out; /* Undo encoding on out digit */
}