diff --git a/src/double-conversion.cc b/src/double-conversion.cc
index 73f4eef..909985b 100644
--- a/src/double-conversion.cc
+++ b/src/double-conversion.cc
@@ -494,10 +494,21 @@
 // because it constant-propagated the radix and concluded that the last
 // condition was always true. By moving it into a separate function the
 // compiler wouldn't warn anymore.
-static bool IsDecimalDigitForRadix(char c, int radix) {
+static bool IsDecimalDigitForRadix(int c, int radix) {
   return '0' <= c && c <= '9' && (c - '0') < radix;
 }
 
+// Returns true if 'c' is a character digit that is valid for the given radix.
+// The 'a_character' should be 'a' or 'A'.
+//
+// The function is small and could be inlined, but VS2012 emitted a warning
+// because it constant-propagated the radix and concluded that the first
+// condition was always false. By moving it into a separate function the
+// compiler wouldn't warn anymore.
+static bool IsCharacterDigitForRadix(int c, int radix, char a_character) {
+  return radix > 10 && c >= a_character && c < a_character + radix - 10;
+}
+
 
 // Parsing integers with radix 2, 4, 8, 16, 32. Assumes current != end.
 template <int radix_log_2, class Iterator>
@@ -533,9 +544,9 @@
     int digit;
     if (IsDecimalDigitForRadix(**current, radix)) {
       digit = static_cast<char>(**current) - '0';
-    } else if (radix > 10 && **current >= 'a' && **current < 'a' + radix - 10) {
+    } else if (IsCharacterDigitForRadix(**current, radix, 'a')) {
       digit = static_cast<char>(**current) - 'a' + 10;
-    } else if (radix > 10 && **current >= 'A' && **current < 'A' + radix - 10) {
+    } else if (IsCharacterDigitForRadix(**current, radix, 'A')) {
       digit = static_cast<char>(**current) - 'A' + 10;
     } else {
       if (allow_trailing_junk || !AdvanceToNonspace(current, end)) {
diff --git a/src/strtod.cc b/src/strtod.cc
index 68d0217..3471756 100644
--- a/src/strtod.cc
+++ b/src/strtod.cc
@@ -264,7 +264,6 @@
     case 7: return DiyFp(UINT64_2PART_C(0x98968000, 00000000), -40);
     default:
       UNREACHABLE();
-      return DiyFp(0, 0);
   }
 }
 
