aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Care <tcare@apple.com>2010-06-17 22:55:40 +0000
committerTom Care <tcare@apple.com>2010-06-17 22:55:40 +0000
commitf521d6e151e0cf443bb767c6a83c06ea411530f8 (patch)
tree3827367644c9b8b93699ad1c63a7960de7700e51
parent949bd4b611f4be575d63da36c94c3662dfa4d459 (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.h9
-rw-r--r--lib/Analysis/PrintfFormatString.cpp3
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: