[PPL-devel] [GIT] ppl/ppl(ppl-0_11-branch): Added missing conversions.

Roberto Bagnara bagnara at cs.unipr.it
Mon Aug 2 21:55:55 CEST 2010


Module: ppl/ppl
Branch: ppl-0_11-branch
Commit: b397097be829089e5306d0fda548ca097f1483e7
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=b397097be829089e5306d0fda548ca097f1483e7

Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date:   Mon Aug  2 19:45:48 2010 +0200

Added missing conversions.

---

 src/checked_int.inlines.hh |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/checked_int.inlines.hh b/src/checked_int.inlines.hh
index 79985cd..465dfcf 100644
--- a/src/checked_int.inlines.hh
+++ b/src/checked_int.inlines.hh
@@ -1178,7 +1178,8 @@ add_2exp_unsigned_int(Type& to, const Type x, unsigned int exp,
   }
   if (exp >= sizeof(Type) * CHAR_BIT)
     return set_pos_overflow_int<To_Policy>(to, dir);
-  return add_unsigned_int<To_Policy, From_Policy, void>(to, x, Type(1) << exp, dir);
+  Type n = Type(1) << exp;
+  return add_unsigned_int<To_Policy, From_Policy, void>(to, x, n, dir);
 }
 
 template <typename To_Policy, typename From_Policy, typename Type>
@@ -1191,9 +1192,14 @@ add_2exp_signed_int(Type& to, const Type x, unsigned int exp,
   }
   if (exp >= sizeof(Type) * CHAR_BIT)
     return set_pos_overflow_int<To_Policy>(to, dir);
-  if (exp == sizeof(Type) * CHAR_BIT - 1)
-    return sub_signed_int<To_Policy, From_Policy, void>(to, x, -2 * (Type(1) << (exp - 1)), dir);
-  return add_signed_int<To_Policy, From_Policy, void>(to, x, Type(1) << exp, dir);
+  if (exp == sizeof(Type) * CHAR_BIT - 1) {
+    Type n = -2 * (Type(1) << (exp - 1));
+    return sub_signed_int<To_Policy, From_Policy, void>(to, x, n, dir);
+  }
+  else {
+    Type n = Type(1) << exp;
+    return add_signed_int<To_Policy, From_Policy, void>(to, x, n, dir);
+  }
 }
 
 template <typename To_Policy, typename From_Policy, typename Type>
@@ -1206,7 +1212,8 @@ sub_2exp_unsigned_int(Type& to, const Type x, unsigned int exp,
   }
   if (exp >= sizeof(Type) * CHAR_BIT)
     return set_neg_overflow_int<To_Policy>(to, dir);
-  return sub_unsigned_int<To_Policy, From_Policy, void>(to, x, Type(1) << exp, dir);
+  Type n = Type(1) << exp;
+  return sub_unsigned_int<To_Policy, From_Policy, void>(to, x, n, dir);
 }
 
 template <typename To_Policy, typename From_Policy, typename Type>
@@ -1219,9 +1226,14 @@ sub_2exp_signed_int(Type& to, const Type x, unsigned int exp,
   }
   if (exp >= sizeof(Type) * CHAR_BIT)
     return set_neg_overflow_int<To_Policy>(to, dir);
-  if (exp == sizeof(Type) * CHAR_BIT - 1)
-    return add_signed_int<To_Policy, From_Policy, void>(to, x, -2 * (Type(1) << (exp - 1)), dir);
-  return sub_signed_int<To_Policy, From_Policy, void>(to, x, Type(1) << exp, dir);
+  if (exp == sizeof(Type) * CHAR_BIT - 1) {
+    Type n = -2 * (Type(1) << (exp - 1));
+    return add_signed_int<To_Policy, From_Policy, void>(to, x, n, dir);
+  }
+  else {
+    Type n = Type(1) << exp;
+    return sub_signed_int<To_Policy, From_Policy, void>(to, x, n, dir);
+  }
 }
 
 template <typename To_Policy, typename From_Policy, typename Type>




More information about the PPL-devel mailing list