Richard Smith
2bf7fdb723
s/CPlusPlus0x/CPlusPlus11/g
...
llvm-svn: 171367
2013-01-02 11:42:31 +00:00
Chandler Carruth
3a02247dc9
Sort all of Clang's files under 'lib', and fix up the broken headers
...
uncovered.
This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.
I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237
2012-12-04 09:13:33 +00:00
Jordan Rose
510260c2bf
Format strings: %D, %U, and %O are valid on Darwin (same as %d, %u, %o).
...
These will warn under -Wformat-non-iso, and will still be rejected
outright on other platforms.
<rdar://problem/12061922>
llvm-svn: 163771
2012-09-13 02:11:03 +00:00
Dmitri Gribenko
76bb5cabfa
Remove redundant semicolons which are null statements.
...
llvm-svn: 163546
2012-09-10 21:20:09 +00:00
Jordan Rose
92303592c3
Format strings: %Ld isn't available on Darwin or Windows.
...
This seems to be a GNU libc extension; we offer a fixit to %lld on
these platforms.
<rdar://problem/11518237>
llvm-svn: 163452
2012-09-08 04:00:03 +00:00
Hans Wennborg
abc1e22d65
Properly check length modfiers for %n in format strings.
...
llvm-svn: 161408
2012-08-07 09:13:19 +00:00
Hans Wennborg
b1ab2a84f0
Remove ScanfArgType and bake that logic into ArgType.
...
This is useful for example for %n in printf, which expects
a pointer to int with the same logic for checking as %d
would have in scanf.
llvm-svn: 161407
2012-08-07 08:59:46 +00:00
Hans Wennborg
c3b3da0bb2
Rename analyze_format_string::ArgTypeResult to ArgType
...
Also remove redundant constructors and unused member functions.
llvm-svn: 161403
2012-08-07 08:11:26 +00:00
Hans Wennborg
16250c7c18
-Wformat: better handling of qualifiers on pointer arguments
...
Warn about using pointers to const-qualified types as arguments to
scanf. Ignore the volatile qualifier when checking if types match.
llvm-svn: 161052
2012-07-31 16:37:47 +00:00
Hans Wennborg
ebcd1c7ca2
Make -Wformat check the argument type for %n.
...
This makes Clang check that the corresponding argument for "%n" in a
format string is a pointer to int.
llvm-svn: 160966
2012-07-30 17:11:32 +00:00
Hans Wennborg
08574d3559
Make -Wformat walk the typedef chain when looking for size_t, etc.
...
Clang's -Wformat fix-its currently suggest using "%zu" for values of
type size_t (in C99 or C++11 mode). However, for a type such as
std::vector<T>::size_type, it does not notice that type is actually
typedeffed to size_t, and instead suggests a format for the underlying
type, such as "%lu" or "%u".
This commit makes the format string fix mechanism walk the typedef chain
so that it notices if the type is size_t, even if that isn't "at the
top".
llvm-svn: 160886
2012-07-27 19:17:46 +00:00
Jordan Rose
614e72bec7
Make suggestions for mismatched enum arguments to printf/scanf.
...
llvm-svn: 157962
2012-06-04 22:49:02 +00:00
Hans Wennborg
9bc9bcc247
Format string analysis: give 'q' its own enumerator.
...
This is in preparation for being able to warn about 'q' and other
non-standard format string features.
It also allows us to print its name correctly.
llvm-svn: 150697
2012-02-16 16:34:54 +00:00
Hans Wennborg
d99d688358
Make -Wformat fix-its preserve original conversion specifiers.
...
This commit makes PrintfSpecifier::fixType() and ScanfSpecifier::fixType()
only fix a conversion specification enough that Clang wouldn't warn about it,
as opposed to always changing it to use the "canonical" conversion specifier.
(PR11975)
This preserves the user's choice of conversion specifier in cases like:
printf("%a", (long double)1);
where we previously suggested "%Lf", we now suggest "%La"
printf("%x", (long)1);
where we previously suggested "%ld", we now suggest "%lx".
llvm-svn: 150578
2012-02-15 09:59:46 +00:00
Ted Kremenek
6fa5727939
Teach scanf/printf checking about '%Ld' and friends (a GNU extension). Fixes PR 9466.
...
llvm-svn: 148859
2012-01-24 21:29:54 +00:00
David Blaikie
e4d798f078
More dead code removal (using -Wunreachable-code)
...
llvm-svn: 148577
2012-01-20 21:50:17 +00:00
Hans Wennborg
6073e31baa
scanf: parse the 'm' length modifier, and check that the right arguments
...
are used with that and the 'a' length modifier.
llvm-svn: 148029
2012-01-12 17:11:12 +00:00
Hans Wennborg
32f115f9c1
scanf analysis: don't bail out after successful parse of scanlist
...
llvm-svn: 148025
2012-01-12 14:44:54 +00:00
Hans Wennborg
23926bd2d7
Support the 'a' length modifier in scanf format strings as a C90
...
extension.
This fixes gcc.dg/format/c90-scanf-3.c and ext-4.c (test for excess
errors).
llvm-svn: 146649
2011-12-15 10:25:47 +00:00
Hans Wennborg
b1a5e09f6f
Check that arguments to a scanf call match the format specifier,
...
and offer fixits when there is a mismatch.
llvm-svn: 146326
2011-12-10 13:20:11 +00:00
Michael J. Spencer
2c35bc1232
Revert r109428 "Hoist argument type checking into CheckFormatHandler. This is prep for scanf format"
...
Got errors about ASTContext being undefined with Visual Studio 2010.
llvm-svn: 109491
2010-07-27 04:46:02 +00:00
Dan Gohman
28ade550f4
Fix namespace polution.
...
llvm-svn: 109440
2010-07-26 21:25:24 +00:00
Ted Kremenek
df4472bca0
Hoist argument type checking into CheckFormatHandler. This is prep for scanf format
...
string argument type checking.
llvm-svn: 109428
2010-07-26 19:45:54 +00:00
Ted Kremenek
4407ea4948
Hookup checking for invalid length modifiers in scanf format strings.
...
llvm-svn: 108907
2010-07-20 20:04:47 +00:00
Ted Kremenek
f03e6d85a1
Add 'ConversionSpecifier' root class in 'analyze_format_string' namespace and
...
derived 'PrintfConversionSpecifier' from this class. We will do the same for
'ScanfConversionSpecifier'.
llvm-svn: 108903
2010-07-20 20:04:27 +00:00
Ted Kremenek
516ef222ba
Rename 'ConsumedSoFarArg' -> 'nArg' and 'OutIntPtrArg' to 'nArg' (scanf and printf checking).
...
llvm-svn: 108900
2010-07-20 20:04:10 +00:00
Ted Kremenek
5c3e1b9a54
Add missing conversion specifier parsing for 'u', 'x', 'o', and 's'. Fixes <rdar://problem/8204052>.
...
llvm-svn: 108742
2010-07-19 19:47:40 +00:00
Ted Kremenek
d7b31cc60d
Hook up warning for an incomplete scanlist in scanf format strings.
...
llvm-svn: 108542
2010-07-16 18:28:03 +00:00
Ted Kremenek
a1ef09407d
Add the main scanf-parsing logic that I meant to include in my previous commit.
...
llvm-svn: 108502
2010-07-16 02:11:31 +00:00