aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Analysis/FormatString.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-09-08 04:00:12 +0000
committerJordan Rose <jordan_rose@apple.com>2012-09-08 04:00:12 +0000
commit2f9cc0425101db67c73c4f2f4b63eb79aacc89ee (patch)
treef2cf711b0d4083f2fa42bb19f60f91b6279f2861 /clang/lib/Analysis/FormatString.cpp
parent92303592c32434e6f8d8f321d1e78fcfec7ac7a4 (diff)
downloadllvm-2f9cc0425101db67c73c4f2f4b63eb79aacc89ee.zip
llvm-2f9cc0425101db67c73c4f2f4b63eb79aacc89ee.tar.gz
llvm-2f9cc0425101db67c73c4f2f4b63eb79aacc89ee.tar.bz2
Format strings: suggest %lld instead of %qd and %Ld with -Wformat-non-iso.
As a corollary to the previous commit, even when an extension is available, we can still offer a fixit to the standard modifier. llvm-svn: 163453
Diffstat (limited to 'clang/lib/Analysis/FormatString.cpp')
-rw-r--r--clang/lib/Analysis/FormatString.cpp14
1 files changed, 3 insertions, 11 deletions
diff --git a/clang/lib/Analysis/FormatString.cpp b/clang/lib/Analysis/FormatString.cpp
index 45c722a..c6ba6fa 100644
--- a/clang/lib/Analysis/FormatString.cpp
+++ b/clang/lib/Analysis/FormatString.cpp
@@ -723,21 +723,13 @@ bool FormatSpecifier::hasStandardLengthConversionCombination() const {
llvm::Optional<LengthModifier>
FormatSpecifier::getCorrectedLengthModifier() const {
- if (LM.getKind() == LengthModifier::AsLongDouble) {
- switch (CS.getKind()) {
- case ConversionSpecifier::dArg:
- case ConversionSpecifier::iArg:
- case ConversionSpecifier::oArg:
- case ConversionSpecifier::uArg:
- case ConversionSpecifier::xArg:
- case ConversionSpecifier::XArg: {
+ if (CS.isAnyIntArg() || CS.getKind() == ConversionSpecifier::nArg) {
+ if (LM.getKind() == LengthModifier::AsLongDouble ||
+ LM.getKind() == LengthModifier::AsQuad) {
LengthModifier FixedLM(LM);
FixedLM.setKind(LengthModifier::AsLongLong);
return FixedLM;
}
- default:
- break;
- }
}
return llvm::Optional<LengthModifier>();