Fariborz Jahanian
c51609a0b5
PCH read/write for selector reference pool.
...
Finishes off radar 6507158.
llvm-svn: 109256
2010-07-23 19:11:11 +00:00
Ted Kremenek
ac9ca01a80
Dataflow solver: Don't overrwite the initial value of a block with top unless new values are available. Patch by Simone Pellegrini!
...
llvm-svn: 109243
2010-07-23 18:15:17 +00:00
Douglas Gregor
5cc2c8b9c3
Vectors are not integer types, so the type system should not classify
...
them as such. Type::is(Signed|Unsigned|)IntegerType() now return false
for vector types, and new functions
has(Signed|Unsigned|)IntegerRepresentation() cover integer types and
vector-of-integer types. This fixes a bunch of latent bugs.
Patch from Anton Yartsev!
llvm-svn: 109229
2010-07-23 15:58:24 +00:00
Zhongxing Xu
73ede01cad
Change arg type.
...
llvm-svn: 109218
2010-07-23 05:55:01 +00:00
Zhongxing Xu
cabfb72654
AnalysisContext is not const.
...
llvm-svn: 109210
2010-07-23 02:49:07 +00:00
Douglas Gregor
be2d8c6096
Basic plumbing for generating a precompiled preamble for an
...
ASTUnit/CXTranslationUnit. We can't actually use this preamble yet,
however.
llvm-svn: 109202
2010-07-23 00:33:23 +00:00
Fariborz Jahanian
86151343b4
Warn when property ivar lookup finds a global variable
...
of same name. In nonfragile-abi2, lookup accesses a synthesized
ivar. This is a transition warning. Radar 8225011.
llvm-svn: 109197
2010-07-22 23:33:21 +00:00
Sebastian Redl
c67764eb4b
Thread bitstream cursors all the way through the AST reading stuff. This way, reading a trivial 2-element chained file actually works.
...
llvm-svn: 109191
2010-07-22 22:43:28 +00:00
Douglas Gregor
cd8bdd025f
Improve performance during cursor traversal when a region of interest
...
is present.
Rather than using clang_getCursorExtent(), which requires
us to lex the token at the ending position to determine its
length. Then, we'd be comparing [a, b) source ranges that cover the
characters in the range rather than the normal behavior for Clang's
source ranges, which covers the tokens in the range. However, relexing
causes us to read the source file (which may come from a precompiled
header), which is rather unfortunate and affects performance.
In the new scheme, we only use Clang-style source ranges that cover
the tokens in the range. At the entry points where this matters
(clang_annotateTokens, clang_getCursor), we make sure to move source
locations to the start of the token.
Addresses most of <rdar://problem/8049381>.
llvm-svn: 109134
2010-07-22 20:22:31 +00:00
Fariborz Jahanian
6e7e8cc19d
atch for implementation of objective-c's -Wselector
...
warning flag in clang. Little more to do
for a PCH issue. Radar 6507158.
llvm-svn: 109129
2010-07-22 18:24:20 +00:00
Nick Lewycky
a11b4bfcbe
Don't crash when an explicit template instantiation has no user-written
...
arguments. This happens in clang itself where template:
template <typename T> T const *getAs();
gets specialized with:
template<> inline clang::TypedefType const *getAs() { ... }
and there's no TemplateArgumentList.
llvm-svn: 109127
2010-07-22 17:56:53 +00:00
Argyrios Kyrtzidis
7609bca74c
Serialization is implemented, fix comments.
...
llvm-svn: 109124
2010-07-22 17:28:27 +00:00
Argyrios Kyrtzidis
2d8891cd5d
Read/write C++0x static_assert for PCH.
...
llvm-svn: 109123
2010-07-22 17:28:12 +00:00
Sebastian Redl
5c415f3e32
Allow loading declcontext information from any file in the chain. Properly write source locations to dependent files. WIP
...
llvm-svn: 109119
2010-07-22 17:01:13 +00:00
Argyrios Kyrtzidis
165b58181f
Read/write FriendTemplateDecl for PCH.
...
llvm-svn: 109113
2010-07-22 16:04:10 +00:00
Argyrios Kyrtzidis
47cd7a91f4
Support C++ try/catch statements for PCH.
...
llvm-svn: 109112
2010-07-22 16:03:56 +00:00
Zhongxing Xu
adf644d05e
Make a bunch of new data structures for the new analysis
...
engine of the new translation unit. State marshal is there but no real
work is done. End nodes are passed back.
llvm-svn: 109105
2010-07-22 13:52:13 +00:00
Sebastian Redl
4e6c567653
Allow loading macros from any file in the chain. WIP
...
llvm-svn: 109048
2010-07-21 22:31:37 +00:00
Ted Kremenek
1ddd6d2b6b
Upgrade "'X' is unavailable" from a warning to an error. This matches GCC's behavior. Note that
...
GCC emits a warning instead of an error when using an unavailable Objective-C protocol, so now
Clang's behavior is more strict in this case, but more consistent. We will need to see how much
this fires on real code and determine whether this case should be downgraded to a warning.
Fixes <rdar://problem/8213093>.
llvm-svn: 109033
2010-07-21 20:43:11 +00:00
Sebastian Redl
fa0614458a
Promote some macro-related stuff to per-file data. Fix a cache-inefficient nested loop by inverting the nesting. Store the size of each file in the chain; will need this later for statement offsets.
...
llvm-svn: 109030
2010-07-21 20:07:32 +00:00
Douglas Gregor
99d2cf4838
Introduce a new C API function, clang_parseTranslationUnit(), which
...
will eventually replace
clang_createTranslationUnitFromSourceFile(). The only addition in
clang_parseTranslationUnit() is a set of flags that can control how
the translation unit is loaded. More interesting flags will be coming.
llvm-svn: 109027
2010-07-21 18:52:53 +00:00
Zhongxing Xu
2e01b80356
Move some methods inline.
...
llvm-svn: 108988
2010-07-21 05:21:41 +00:00
Sebastian Redl
b2831dbff7
Apparently not every system thinks that references in pairs are as cool as I think.
...
llvm-svn: 108959
2010-07-20 22:55:31 +00:00
Sebastian Redl
3462779369
Allow loading declarations from any file in the chain. WIP
...
llvm-svn: 108956
2010-07-20 22:46:15 +00:00
Sebastian Redl
837a6cbe03
Allow loading types from any file in the chain. WIP
...
llvm-svn: 108954
2010-07-20 22:37:49 +00:00
Sebastian Redl
0675030cf9
Allow loading source locations from any file in the chain. WIP
...
llvm-svn: 108942
2010-07-20 21:50:20 +00:00
Sebastian Redl
b293a45d28
More work on getting PCHReader to handle multiple files. Promote SLocOffsets to per-file data. WIP
...
llvm-svn: 108930
2010-07-20 21:20:32 +00:00
Douglas Gregor
af82e3510b
Introduce a new lexer function to compute the "preamble" of a file,
...
which is the part of the file that contains all of the initial
comments, includes, and preprocessor directives that occur before any
of the actual code. Added a new -print-preamble cc1 action that is
only used for testing.
llvm-svn: 108913
2010-07-20 20:18:03 +00:00
Ted Kremenek
ea28f83a5f
Move 'hasValidLengthModifier' from PrintfFormatSpecifier to FormatSpecifier.
...
llvm-svn: 108906
2010-07-20 20:04:42 +00:00
Ted Kremenek
bb0ffd7ade
Refactor ScanfConversionSpecifier to subclass ConversionSpecifier.
...
llvm-svn: 108904
2010-07-20 20:04:32 +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
fe1316882c
Tidy up analyze_printf::ConversionSpecifier::Kind declaration, prepping it to be merged
...
with analyze_scanf::ConversionSpecifier::Kind.
llvm-svn: 108902
2010-07-20 20:04:20 +00:00
Ted Kremenek
348d1499c1
Rename 'UnicodeStrArg' to 'SArg'.
...
llvm-svn: 108901
2010-07-20 20:04:15 +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
1ce32be36a
Rename 'VoidPtrArg' to 'pArg' in printf/scanf checking.
...
llvm-svn: 108899
2010-07-20 20:04:04 +00:00
Ted Kremenek
563e3edbc2
Rename 'CStrArg' to 'sArg' for printf checking to match with the analagous enum for scanf checking.
...
llvm-svn: 108898
2010-07-20 20:03:58 +00:00
Ted Kremenek
ab0fe8a48d
Rename analyze_printf::ConversionSpecifier::IntAsCharArg to 'cArg' to match
...
analagous enum in analyze_scanf. This is prep for refactoring the logic for handling
ConversionSpecifiers for both scanf and printf.
llvm-svn: 108897
2010-07-20 20:03:49 +00:00
Ted Kremenek
b65a9d5a1a
Rename diagnostic so that it can be reused with scanf checking. No functionality change.
...
llvm-svn: 108896
2010-07-20 20:03:43 +00:00
Douglas Gregor
b37b46e488
Complain when string literals are too long for the active language
...
standard's minimum requirements.
llvm-svn: 108837
2010-07-20 14:33:20 +00:00
Argyrios Kyrtzidis
dde5790562
Hide FunctionTemplateDecl's specializations folding set as implementation detail and introduce
...
FunctionTemplateDecl::findSpecialization.
Redeclarations of specializations will not cause the previous decl to be removed from the set,
the set will keep the canonical decl. findSpecialization will return the most recent redeclaration.
llvm-svn: 108834
2010-07-20 13:59:58 +00:00
Argyrios Kyrtzidis
47470f2f3f
Hide the specializations folding sets of ClassTemplateDecl as an implementation detail (InsertPos
...
leaks though) and add methods to its interface for adding/finding specializations.
Simplifies its users a bit and we no longer need to replace specializations in the folding set with
their redeclarations. We just return the most recent redeclarations.
As a bonus, it fixes http://llvm.org/PR7670 .
llvm-svn: 108832
2010-07-20 13:59:28 +00:00
Zhongxing Xu
edb77fe8b4
Constify all references to Stmt* and CFGBlock* in libChecker.
...
llvm-svn: 108811
2010-07-20 06:22:24 +00:00
Zhongxing Xu
09a95d7448
Add const iterator to InitListExpr.
...
llvm-svn: 108810
2010-07-20 06:15:27 +00:00
Sebastian Redl
c57d34bc35
Update ImplicitCastExpr to be able to represent an XValue.
...
llvm-svn: 108807
2010-07-20 04:20:21 +00:00
Zhongxing Xu
c2acbe0f45
Constify.
...
llvm-svn: 108800
2010-07-20 02:41:28 +00:00
Zhongxing Xu
08ce5dd0f0
Add comments.
...
llvm-svn: 108795
2010-07-20 02:14:22 +00:00
Sebastian Redl
3d3f0b1039
Remove PCHReader::getStream(), it was unused. Inline PCHReader::getDelsCursor() into its sole caller and remove it. This reduces the attack surface of multiple PCH files towards code outside the PCH implementation.
...
llvm-svn: 108763
2010-07-19 22:38:35 +00:00
Sebastian Redl
bd1b5befee
Promote IdentifierOffsets to per-file data.
...
llvm-svn: 108762
2010-07-19 22:28:42 +00:00
Sebastian Redl
9e687994f3
Promote DeclOffsets and TypeOffsets to per-file data.
...
llvm-svn: 108760
2010-07-19 22:06:55 +00:00
Fariborz Jahanian
3c7ebc3a5e
Patch to type match comparing Objective-C Classes which implement
...
protocols (Radar 8191774).
llvm-svn: 108758
2010-07-19 22:02:22 +00:00