Added lval type (and tracking) for StringLiterals.

llvm-svn: 50109
diff --git a/clang/lib/Analysis/RValues.cpp b/clang/lib/Analysis/RValues.cpp
index 86f5ac9..5e161f3 100644
--- a/clang/lib/Analysis/RValues.cpp
+++ b/clang/lib/Analysis/RValues.cpp
@@ -240,6 +240,10 @@
 
 LVal LVal::MakeVal(AddrLabelExpr* E) { return lval::GotoLabel(E->getLabel()); }
 
+LVal LVal::MakeVal(StringLiteral* S) {
+  return lval::StringLiteralVal(S);
+}
+
 //===----------------------------------------------------------------------===//
 // Utility methods for constructing RVals (both NonLVals and LVals).
 //===----------------------------------------------------------------------===//
@@ -392,6 +396,12 @@
           << cast<lval::FuncVal>(this)->getDecl()->getIdentifier()->getName();
       break;
       
+    case lval::StringLiteralValKind:
+      Out << "literal \""
+          << cast<lval::StringLiteralVal>(this)->getLiteral()->getStrData()
+          << "\"";
+      break;
+      
     default:
       assert (false && "Pretty-printing not implemented for this LVal.");
       break;