From b70c0a2de5809c6e959d5e9fecc7aa4a7370fb1a Mon Sep 17 00:00:00 2001
From: Georg-Johann Lay <avr@gjlay.de>
Date: Tue, 25 Sep 2012 16:19:43 +0000
Subject: [PATCH] re PR other/54701 (double_int conversion breaks avr build)

	PR other/54701
	* config/avr/avr-log.c (avr_double_int_pop_digit): Reerite using
	double_int::udivmod.

From-SVN: r191716
---
 gcc/ChangeLog            |  6 ++++++
 gcc/config/avr/avr-log.c | 11 ++++-------
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 174828378b08..d6365a88bacb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-09-25  Georg-Johann Lay  <avr@gjlay.de>
+
+	PR other/54701
+	* config/avr/avr-log.c (avr_double_int_pop_digit): Reerite using
+	double_int::udivmod.
+
 2012-09-25  Georg-Johann Lay  <avr@gjlay.de>
 
 	* config/avr/avr.c (avr_set_current_function): Check cfun->machine
diff --git a/gcc/config/avr/avr-log.c b/gcc/config/avr/avr-log.c
index f86165d4c8e2..edb1cbda1ec0 100644
--- a/gcc/config/avr/avr-log.c
+++ b/gcc/config/avr/avr-log.c
@@ -144,15 +144,12 @@ avr_log_set_caller_f (const char *caller)
 static unsigned
 avr_double_int_pop_digit (double_int *cst, unsigned base)
 {
-  unsigned HOST_WIDE_INT resl, reml;
-  HOST_WIDE_INT resh, remh;
+  double_int drem;
 
-  div_and_round_double (FLOOR_DIV_EXPR, true, cst->low, cst->high, base, 0,
-			&resl, &resh, &reml, &remh);
-  cst->high = resh;
-  cst->low = resl;
+  *cst = cst->udivmod (double_int::from_uhwi (base), (int) FLOOR_DIV_EXPR,
+                       &drem);
 
-  return reml;
+  return (unsigned) drem.to_uhwi();
 }
 
 
-- 
GitLab