[llvm] 500dda0 - [RISCV] Refactor version major version parsing in parseNormalizedArchString. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed May 1 14:59:24 PDT 2024


Author: Craig Topper
Date: 2024-05-01T14:56:56-07:00
New Revision: 500dda049ea1b140a888f284b3c512cd77af6fce

URL: https://github.com/llvm/llvm-project/commit/500dda049ea1b140a888f284b3c512cd77af6fce
DIFF: https://github.com/llvm/llvm-project/commit/500dda049ea1b140a888f284b3c512cd77af6fce.diff

LOG: [RISCV] Refactor version major version parsing in parseNormalizedArchString. NFC

Use an index variable and array indexing instead of manipulating
a temporary StringRef.

Added: 
    

Modified: 
    llvm/lib/TargetParser/RISCVISAInfo.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/TargetParser/RISCVISAInfo.cpp b/llvm/lib/TargetParser/RISCVISAInfo.cpp
index c763ee73b4b0b7..e8172ebb259720 100644
--- a/llvm/lib/TargetParser/RISCVISAInfo.cpp
+++ b/llvm/lib/TargetParser/RISCVISAInfo.cpp
@@ -460,19 +460,18 @@ RISCVISAInfo::parseNormalizedArchString(StringRef Arch) {
 
     // Split Prefix into the extension name and the major version number
     // (the trailing digits of Prefix).
-    int TrailingDigits = 0;
-    StringRef ExtName = Prefix;
-    while (!ExtName.empty()) {
-      if (!isDigit(ExtName.back()))
+    size_t VersionStart = Prefix.size();
+    while (VersionStart != 0) {
+      if (!isDigit(Prefix[VersionStart - 1]))
         break;
-      ExtName = ExtName.drop_back(1);
-      TrailingDigits++;
+      --VersionStart;
     }
-    if (!TrailingDigits)
+    if (VersionStart == Prefix.size())
       return createStringError(errc::invalid_argument,
                                "extension lacks version in expected format");
 
-    StringRef MajorVersionStr = Prefix.take_back(TrailingDigits);
+    StringRef ExtName = Prefix.slice(0, VersionStart);
+    StringRef MajorVersionStr = Prefix.slice(VersionStart, StringRef::npos);
     if (MajorVersionStr.getAsInteger(10, MajorVersion))
       return createStringError(errc::invalid_argument,
                                "failed to parse major version number");


        


More information about the llvm-commits mailing list