From c951e3394fc8cab3d1a2552fb8d312752234657f Mon Sep 17 00:00:00 2001
From: DeLesley Hutchins <delesley@google.com>
Date: Fri, 30 May 2014 18:20:04 +0000
Subject: [PATCH] Thread Safety Analysis: fix handling of string and char
 literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209913 91177308-0d34-0410-b5e6-96231b3b80d8
---
 include/clang/Analysis/Analyses/ThreadSafetyTIL.h      | 2 +-
 include/clang/Analysis/Analyses/ThreadSafetyTraverse.h | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/include/clang/Analysis/Analyses/ThreadSafetyTIL.h b/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
index e84af077f9f..8e4299ea70e 100644
--- a/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
+++ b/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
@@ -237,7 +237,7 @@ inline ValueType ValueType::getValueType<long double>() {
 
 template<>
 inline ValueType ValueType::getValueType<StringRef>() {
-  return ValueType(BT_Pointer, getSizeType(sizeof(StringRef)), false, 0);
+  return ValueType(BT_String, getSizeType(sizeof(StringRef)), false, 0);
 }
 
 template<>
diff --git a/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h b/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
index 322a3b589ee..bc1490b4a44 100644
--- a/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
+++ b/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
@@ -599,6 +599,10 @@ protected:
     SS << E->value();
   }
 
+  void printLiteralT(LiteralT<uint8_t> *E, StreamType &SS) {
+    SS << "'" << E->value() << "'";
+  }
+
   void printLiteral(Literal *E, StreamType &SS) {
     if (E->clangExpr()) {
       SS << getSourceLiteralString(E->clangExpr());
-- 
GitLab