[PATCH] Avoid imaxdiv when only one of the results is wanted

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



dash rather pointlessly calls imaxdiv, only to discard one of its
results. The call was already made conditional a while back because some
systems don't have imaxdiv, but the generated code for the version with
imaxdiv and the one with / and % is identical (with GCC 4.6.1 or ICC
12.0.2, with -O0, -O2 or -Os), so it could just as well go entirely to
clean up the code a little bit.

Signed-off-by: Harald van Dijk <harald@xxxxxxxxxxx>

diff --git a/ChangeLog b/ChangeLog
index b96e5b2..02bfda0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-07-26  Harald van Dijk <harald@xxxxxxxxxxx>
+
+	* Avoid imaxdiv when only one of the results is wanted.
+
 2010-07-09  maximilian attems <max@xxxxxxx>
 
 	* Fix klibc DEBUG compilation.
diff --git a/configure.ac b/configure.ac
index 7eae954..5cd6e95 100644
--- a/configure.ac
+++ b/configure.ac
@@ -85,7 +85,7 @@ AC_CHECK_DECL([PRIdMAX],,
 ])
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS(bsearch faccessat getpwnam getrlimit imaxdiv isalpha
killpg \
+AC_CHECK_FUNCS(bsearch faccessat getpwnam getrlimit isalpha killpg \
 	       mempcpy \
 	       sigsetmask stpcpy strchrnul strsignal strtod strtoimax \
 	       strtoumax sysconf)
diff --git a/src/arith_yacc.c b/src/arith_yacc.c
index bf21830..1a087c3 100644
--- a/src/arith_yacc.c
+++ b/src/arith_yacc.c
@@ -94,22 +94,13 @@ static inline int higher_prec(int op1, int op2)
 
 static intmax_t do_binop(int op, intmax_t a, intmax_t b)
 {
-#ifdef HAVE_IMAXDIV
-	imaxdiv_t div;
-#endif
-
 	switch (op) {
 	default:
 	case ARITH_REM:
 	case ARITH_DIV:
 		if (!b)
 			yyerror("division by zero");
-#ifdef HAVE_IMAXDIV
-		div = imaxdiv(a, b);
-		return op == ARITH_REM ? div.rem : div.quot;
-#else
 		return op == ARITH_REM ? a % b : a / b;
-#endif
 	case ARITH_MUL:
 		return a * b;
 	case ARITH_ADD:

--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux