       radix: radix, isNegative: false)
   }
   return _parseASCIIDigits(codeUnits, radix: radix, isNegative: false)
+}
+
+@_alwaysEmitIntoClient
+internal func _parseASCII<S: StringProtocol, Result: FixedWidthInteger>(
+    _ text: S, radix: Int
+) -> Result? {
+    var str = String(text)
+    return str.withUTF8 { _parseASCII($0, radix: radix) }
 }
 
 extension FixedWidthInteger {

    let result: Self? =
      text.utf8.withContiguousStorageIfAvailable {
        _parseASCII($0, radix: radix)
      } ?? _parseASCII(text.utf8, radix: radix)
    guard let result_ = result else { return nil }
    self = result_
  }

//
//===----------------------------------------------------------------------===//

@_alwaysEmitIntoClient
internal func _parseASCIIDigits<Result: FixedWidthInteger>(
  _ codeUnits: UnsafeBufferPointer<UInt8>, radix: Int, isNegative: Bool
) -> Result? {
  _internalInvariant(radix >= 2 && radix <= 36)
  guard _fastPath(!codeUnits.isEmpty) else { return nil }
  let multiplicand = Result(radix)
