Update slang for LLVM rebase to r256229

Bug: http://b/26987366

Change-Id: I816e6ad4a1d43d681f3d022d119e3082702251a1
diff --git a/llvm-rs-cc.cpp b/llvm-rs-cc.cpp
index 631e9b7..201db3a 100644
--- a/llvm-rs-cc.cpp
+++ b/llvm-rs-cc.cpp
@@ -47,16 +47,18 @@
 #include <string>
 
 namespace {
-class StringSet : public llvm::StringSaver {
+class StringSet {
 public:
-  const char *saveImpl(llvm::StringRef Str) override {
-    return Strings.insert(Str.str()).first->c_str();
+  const char *save(const char *Str) {
+    return Strings.save(Str);
   }
 
-  StringSet() : llvm::StringSaver(A), A() {}
+  StringSet() : Strings(A), A() {}
+
+  llvm::StringSaver & getStringSaver() { return Strings; }
 
 private:
-  std::set<std::string> Strings;
+  llvm::StringSaver Strings;
   llvm::BumpPtrAllocator A;
 };
 }
@@ -230,7 +232,7 @@
   llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> DiagOpts =
       new clang::DiagnosticOptions();
   if (!slang::ParseArguments(llvm::makeArrayRef(argv, argc), Inputs, Opts,
-                             *DiagOpts, SavedStrings)) {
+                             *DiagOpts, SavedStrings.getStringSaver())) {
     // Exits when there's any error occurred during parsing the arguments
     return 1;
   }