Use explicit division avoidance in print_decimal.
diff --git a/printf.c b/printf.c
index b67d7da..c982353 100644
--- a/printf.c
+++ b/printf.c
@@ -14,8 +14,16 @@
     {
       do
 	{
-	  *--p = (val % 10) + '0';
-	  val /= 10;
+	  unsigned long d, r;
+
+	  /* Compiling with -Os results in a call to the division routine.
+	     Do what the compiler ought to have done.  */
+	  d = __builtin_alpha_umulh(val, 0xcccccccccccccccd);
+	  d >>= 3;
+	  r = val - (d * 10);
+
+	  *--p = r + '0';
+	  val = d;
 	}
       while (val);
     }