forked from OSchip/llvm-project
Bug 7394 - Fixed toString representation of Precisions in format strings.
M include/clang/Analysis/Analyses/PrintfFormatString.h M lib/Analysis/PrintfFormatString.cpp llvm-svn: 106245
This commit is contained in:
parent
0125b6410a
commit
9eee328dac
|
@ -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 {
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue