diff options
-rw-r--r-- | lib/Analysis/PrintfFormatString.cpp | 3 | ||||
-rw-r--r-- | test/Sema/format-strings.c | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/Analysis/PrintfFormatString.cpp b/lib/Analysis/PrintfFormatString.cpp index 357080fa74..05b5d9cceb 100644 --- a/lib/Analysis/PrintfFormatString.cpp +++ b/lib/Analysis/PrintfFormatString.cpp @@ -309,6 +309,9 @@ ArgTypeResult FormatSpecifier::getArgType(ASTContext &Ctx) const { // version of ptrdiff_t? return ArgTypeResult(); } + + if (CS.isDoubleArg()) + return Ctx.DoubleTy; // FIXME: Handle other cases. return ArgTypeResult(); diff --git a/test/Sema/format-strings.c b/test/Sema/format-strings.c index f1ab868dc7..21d7770e12 100644 --- a/test/Sema/format-strings.c +++ b/test/Sema/format-strings.c @@ -160,6 +160,7 @@ void test10(int x, float f, int i) { printf("%"); // expected-warning{{incomplete format specifier}} printf("%.d", x); // no-warning printf("%.", x); // expected-warning{{incomplete format specifier}} + printf("%f", 4); // expected-warning{{conversion specifies type 'double' but the argument has type 'int'}} } typedef struct __aslclient *aslclient; |