clover/llvm: Factor out compiler option tokenization.
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 17 May 2016 14:02:38 +0000 (16:02 +0200)
committerFrancisco Jerez <currojerez@riseup.net>
Tue, 12 Jul 2016 03:20:47 +0000 (20:20 -0700)
Reviewed-by: Serge Martin <edb+mesa@sigluy.net>
Tested-by: Jan Vesely <jan.vesely@rutgers.edu>
src/gallium/state_trackers/clover/llvm/invocation.cpp

index 7cfd4481e2d6193f06fa660de3e48b906fafbf1c..155ba066f5cbbd02be36ff10ba618549737b9f62 100644 (file)
@@ -96,6 +96,18 @@ namespace {
        }
    }
 
+   inline std::vector<std::string>
+   tokenize(const std::string &s) {
+      std::vector<std::string> ss;
+      std::istringstream iss(s);
+      std::string t;
+
+      while (getline(iss, t, ' '))
+         ss.push_back(t);
+
+      return ss;
+   }
+
    struct target {
       target(const std::string &s) :
          cpu(s.begin(), s.begin() + s.find_first_of("-")),
@@ -117,18 +129,7 @@ namespace {
       std::string log;
       llvm::raw_string_ostream s_log(log);
 
-      // Parse the compiler options:
-      std::vector<std::string> opts_array;
-      std::istringstream ss(opts);
-
-      while (!ss.eof()) {
-         std::string opt;
-         getline(ss, opt, ' ');
-         opts_array.push_back(opt);
-      }
-
-      opts_array.push_back(name);
-
+      const std::vector<std::string> opts_array = tokenize(opts + " " + name);
       std::vector<const char *> opts_carray;
       for (unsigned i = 0; i < opts_array.size(); i++) {
          opts_carray.push_back(opts_array.at(i).c_str());