From 35c79da3f890c28dabedbe1be3880972f706e105 Mon Sep 17 00:00:00 2001 From: Nick Kledzik Date: Tue, 2 Oct 2012 20:01:48 +0000 Subject: [PATCH] Improve overflow detection in StringRef::getAsUnsignedInteger(). llvm-svn: 165038 --- llvm/lib/Support/StringRef.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Support/StringRef.cpp b/llvm/lib/Support/StringRef.cpp index 8aab4b2..f8e9208 100644 --- a/llvm/lib/Support/StringRef.cpp +++ b/llvm/lib/Support/StringRef.cpp @@ -350,8 +350,8 @@ bool llvm::getAsUnsignedInteger(StringRef Str, unsigned Radix, unsigned long long PrevResult = Result; Result = Result*Radix+CharVal; - // Check for overflow. - if (Result < PrevResult) + // Check for overflow by shifting back and seeing if bits were lost. + if (Result/Radix < PrevResult) return true; Str = Str.substr(1); -- 2.7.4