diff options
author | Tom Care <tcare@apple.com> | 2010-06-17 22:55:40 +0000 |
---|---|---|
committer | Tom Care <tcare@apple.com> | 2010-06-17 22:55:40 +0000 |
commit | f521d6e151e0cf443bb767c6a83c06ea411530f8 (patch) | |
tree | 3827367644c9b8b93699ad1c63a7960de7700e51 | |
parent | 949bd4b611f4be575d63da36c94c3662dfa4d459 (diff) |
Bug 7394 - Fixed toString representation of Precisions in format strings.
M include/clang/Analysis/Analyses/PrintfFormatString.h
M lib/Analysis/PrintfFormatString.cpp
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106245 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Analysis/Analyses/PrintfFormatString.h | 9 | ||||
-rw-r--r-- | lib/Analysis/PrintfFormatString.cpp | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/include/clang/Analysis/Analyses/PrintfFormatString.h b/include/clang/Analysis/Analyses/PrintfFormatString.h index 280c5baa6f..79500bb116 100644 --- a/include/clang/Analysis/Analyses/PrintfFormatString.h +++ b/include/clang/Analysis/Analyses/PrintfFormatString.h @@ -192,11 +192,11 @@ public: unsigned amountLength, bool usesPositionalArg) : start(amountStart), length(amountLength), hs(howSpecified), amt(amount), - UsesPositionalArg(usesPositionalArg) {} + UsesPositionalArg(usesPositionalArg), UsesDotPrefix(0) {} OptionalAmount(bool valid = true) : start(0),length(0), hs(valid ? NotSpecified : Invalid), amt(0), - UsesPositionalArg(0) {} + UsesPositionalArg(0), UsesDotPrefix(0) {} bool isInvalid() const { return hs == Invalid; @@ -236,12 +236,16 @@ public: return amt + 1; } + bool usesDotPrefix() const { return UsesDotPrefix; } + void setUsesDotPrefix() { UsesDotPrefix = true; } + private: const char *start; unsigned length; HowSpecified hs; unsigned amt; bool UsesPositionalArg : 1; + bool UsesDotPrefix; }; // Class representing optional flags with location and representation @@ -362,6 +366,7 @@ public: void setPrecision(const OptionalAmount &Amt) { Precision = Amt; + Precision.setUsesDotPrefix(); } const OptionalAmount &getPrecision() const { diff --git a/lib/Analysis/PrintfFormatString.cpp b/lib/Analysis/PrintfFormatString.cpp index ba32e749a8..951be17e2f 100644 --- a/lib/Analysis/PrintfFormatString.cpp +++ b/lib/Analysis/PrintfFormatString.cpp @@ -611,6 +611,9 @@ const char *LengthModifier::toString() const { //===----------------------------------------------------------------------===// void OptionalAmount::toString(llvm::raw_ostream &os) const { + if (UsesDotPrefix) + os << "."; + switch (hs) { case Invalid: case NotSpecified: |