diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-11-11 01:36:32 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-11-11 01:36:32 +0000 |
commit | d2f016f8f27db0820c46fbfbf2bcc0825f3a4284 (patch) | |
tree | 29f08cb109e0276717bd598f358bdfad2afd25f4 /lib/Analysis/MemRegion.cpp | |
parent | 12b49d9293b3bc730c127ac3645c70f581c9caf7 (diff) |
Fix StringLiteral print bug.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59015 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/MemRegion.cpp')
-rw-r--r-- | lib/Analysis/MemRegion.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/Analysis/MemRegion.cpp b/lib/Analysis/MemRegion.cpp index f6bf4497ba..ae575f1164 100644 --- a/lib/Analysis/MemRegion.cpp +++ b/lib/Analysis/MemRegion.cpp @@ -152,7 +152,23 @@ void CompoundLiteralRegion::print(llvm::raw_ostream& os) const { } void StringRegion::print(llvm::raw_ostream& os) const { - os << "\"" << Str->getStrData() << "\""; + if (Str->isWide()) os << 'L'; + os << '"'; + + // FIXME: this doesn't print wstrings right. + for (unsigned i = 0, e = Str->getByteLength(); i != e; ++i) { + switch (Str->getStrData()[i]) { + default: os << Str->getStrData()[i]; break; + // Handle some common ones to make dumps prettier. + case '\\': os << "\\\\"; break; + case '"': os << "\\\""; break; + case '\n': os << "\\n"; break; + case '\t': os << "\\t"; break; + case '\a': os << "\\a"; break; + case '\b': os << "\\b"; break; + } + } + os << '"'; } //===----------------------------------------------------------------------===// |