summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/RValues.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-04-22 21:39:21 +0000
committerTed Kremenek <kremenek@apple.com>2008-04-22 21:39:21 +0000
commitc79c0591d6c63eb7e06e68faadcff14abb056b52 (patch)
tree8fe082b5e4c55091f4097a4e8ecfe03a49168670 /clang/lib/Analysis/RValues.cpp
parenteccf3e582114611d2b6c1915f709ddc6f6b7943e (diff)
downloadbcm5719-llvm-c79c0591d6c63eb7e06e68faadcff14abb056b52.tar.gz
bcm5719-llvm-c79c0591d6c63eb7e06e68faadcff14abb056b52.zip
Added lval type (and tracking) for StringLiterals.
llvm-svn: 50109
Diffstat (limited to 'clang/lib/Analysis/RValues.cpp')
-rw-r--r--clang/lib/Analysis/RValues.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Analysis/RValues.cpp b/clang/lib/Analysis/RValues.cpp
index 86f5ac96fd8..5e161f34a5c 100644
--- a/clang/lib/Analysis/RValues.cpp
+++ b/clang/lib/Analysis/RValues.cpp
@@ -240,6 +240,10 @@ RVal RVal::GetSymbolValue(SymbolManager& SymMgr, VarDecl* D) {
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 @@ void LVal::print(std::ostream& Out) const {
<< 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;
OpenPOWER on IntegriCloud