summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/PrintfFormatString.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-01-08 05:28:46 +0000
committerTed Kremenek <kremenek@apple.com>2011-01-08 05:28:46 +0000
commitbf4832cda8c3f8c8b7eff06be4594cac02ddf6b4 (patch)
treeda227e3591636aa9c4090df3aed3a74a8535bb4d /clang/lib/Analysis/PrintfFormatString.cpp
parenta322cae011c7949e6986bb4e8c9319569227b5d8 (diff)
downloadbcm5719-llvm-bf4832cda8c3f8c8b7eff06be4594cac02ddf6b4.tar.gz
bcm5719-llvm-bf4832cda8c3f8c8b7eff06be4594cac02ddf6b4.zip
Add semantic checking that the "thousands grouping"
prefix in a printf format string is matched with the appropriate conversion specifier. llvm-svn: 123055
Diffstat (limited to 'clang/lib/Analysis/PrintfFormatString.cpp')
-rw-r--r--clang/lib/Analysis/PrintfFormatString.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/Analysis/PrintfFormatString.cpp b/clang/lib/Analysis/PrintfFormatString.cpp
index d99de2215dc..82ab14dbed6 100644
--- a/clang/lib/Analysis/PrintfFormatString.cpp
+++ b/clang/lib/Analysis/PrintfFormatString.cpp
@@ -590,6 +590,24 @@ bool PrintfSpecifier::hasValidLeftJustified() const {
}
}
+bool PrintfSpecifier::hasValidThousandsGroupingPrefix() const {
+ if (!HasThousandsGrouping)
+ return true;
+
+ switch (CS.getKind()) {
+ case ConversionSpecifier::dArg:
+ case ConversionSpecifier::iArg:
+ case ConversionSpecifier::uArg:
+ case ConversionSpecifier::fArg:
+ case ConversionSpecifier::FArg:
+ case ConversionSpecifier::gArg:
+ case ConversionSpecifier::GArg:
+ return true;
+ default:
+ return false;
+ }
+}
+
bool PrintfSpecifier::hasValidPrecision() const {
if (Precision.getHowSpecified() == OptionalAmount::NotSpecified)
return true;
OpenPOWER on IntegriCloud