From f521d6e151e0cf443bb767c6a83c06ea411530f8 Mon Sep 17 00:00:00 2001 From: Tom Care Date: Thu, 17 Jun 2010 22:55:40 +0000 Subject: [PATCH] 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 --- include/clang/Analysis/Analyses/PrintfFormatString.h | 9 +++++++-- 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: -- 2.40.0