- Apr 19, 2013
-
-
Reid Kleckner authored
Microsoft's Source Annotation Language (SAL) defines a bunch of keywords for annotating the inputs and outputs of functions. Empty definitions for the keywords are provided by <stdlib.h> -> <crtdefs.h> -> <sal.h>. This makes it basically impossible to include MSVC's stdlib.h and Clang's *mmintrin.h headers at the same time if they have variables named __in. As a workaround, I've renamed those variables. This fixes the Modules/compiler_builtins.m test which was XFAILed, presumably due to this conflict. llvm-svn: 179860
-
Richard Smith authored
Implement CodeGen for C++11 thread_local, following the Itanium ABI specification as discussed on cxx-abi-dev. llvm-svn: 179858
-
Anton Yartsev authored
llvm-svn: 179846
-
Eric Christopher authored
This reverts commit r179837 as it seems to be causing test failures. llvm-svn: 179839
-
David Blaikie authored
More changes later for using declarations/DW_TAG_imported_declaration. llvm-svn: 179837
-
David Blaikie authored
Not that the DI* hierarchy is terribly type safe, but this makes the contract a little clearer I think. llvm-svn: 179835
-
Argyrios Kyrtzidis authored
llvm-svn: 179823
-
Argyrios Kyrtzidis authored
[libclang] Introduce clang_Cursor_isVariadic, which returns non-zero if the given cursor is a variadic function or method. rdar://13667150 llvm-svn: 179819
-
Fariborz Jahanian authored
initialized temporaries to objc++ methods. // rdar://12788429 llvm-svn: 179818
-
Argyrios Kyrtzidis authored
[libclang] Introduce clang_Cursor_getObjCDeclQualifiers, to query for 'ObjC Qualifiers' written next to the return and parameter types in an ObjC method declarations. rdar://13676977 llvm-svn: 179816
-
Chad Rosier authored
llvm-svn: 179811
-
Benjamin Kramer authored
llvm-svn: 179806
-
Argyrios Kyrtzidis authored
[libclang] Introduce clang_Cursor_getObjCPropertyAttributes to query the written attributes in a property declaration. rdar://13684512 llvm-svn: 179803
-
- Apr 18, 2013
-
-
Dmitri Gribenko authored
-Wunitnitialized warning. Patch by Rui Ueyama. llvm-svn: 179794
-
Fariborz Jahanian authored
Objective-C dictionary literals has bad syntax for the separator. // rdar://10679157 llvm-svn: 179784
-
Argyrios Kyrtzidis authored
llvm-svn: 179782
-
Argyrios Kyrtzidis authored
llvm-svn: 179781
-
Argyrios Kyrtzidis authored
llvm-svn: 179777
-
Ted Kremenek authored
llvm-svn: 179776
-
Andy Gibbs authored
This was a suggestion by Jordan Rose since the documented format for these pragmas is without the parentheses. At the same time, I've increased test coverage too for the preprocessed output. llvm-svn: 179771
-
-
Argyrios Kyrtzidis authored
Patch by Doug. rdar://13684618 llvm-svn: 179769
-
Jordan Rose authored
The analyzer uses LazyCompoundVals to represent rvalues of aggregate types, most importantly structs and arrays. This allows us to efficiently copy around an entire struct, rather than doing a memberwise load every time a struct rvalue is encountered. This can also keep memory usage down by allowing several structs to "share" the same snapshotted bindings. However, /lookup/ through LazyCompoundVals can be expensive, especially since they can end up chaining back to the original value. While we try to reuse LazyCompoundVals whenever it's safe, and cache information about this transitivity, the fact is it's sometimes just not a good idea to perpetuate LazyCompoundVals -- the tradeoffs just aren't worth it. This commit changes RegionStore so that binding a LazyCompoundVal to struct will do a memberwise copy if the struct is simple enough. Today's definition of "simple enough" is "up to N scalar members" (see below), but that could easily be changed in the future. This is enough to bring the test case in PR15697 back down to a manageable analysis time (within 20% of its original time, in an unfair test where the new analyzer is not compiled with LTO). The actual value of "N" is controlled by a new -analyzer-config option, 'region-store-small-struct-limit'. It defaults to "2", meaning structs with zero, one, or two scalar members will be considered "simple enough" for this code path. It's worth noting that a more straightforward implementation would do this on load, not on bind, and make use of the structure we already have for this: CompoundVal. A long time ago, this was actually how RegionStore modeled aggregate-to-aggregate copies, but today it's only used for compound literals. Unfortunately, it seems that we've special-cased LazyCompoundVal in certain places (such as liveness checks) but failed to similarly special-case CompoundVal in all of them. Until we're confident that CompoundVal is handled properly everywhere, this solution is safer, since the entire optimization is just an implementation detail of RegionStore. <rdar://problem/13599304> llvm-svn: 179767
-
Jordan Rose authored
A C++ overloaded operator may be implemented as an instance method, and that instance method may be called on an rvalue object, which has no associated region. The analyzer handles this by creating a temporary region just for the evaluation of this call; however, it is possible that /by creating the region/, the analyzer ends up in a previously-explored state. In this case we don't need to continue along this path. This doesn't actually show any behavioral change now, but it starts being used with the next commit and prevents an assertion failure there. llvm-svn: 179766
-
Chad Rosier authored
llvm-svn: 179762
-
Manuel Klimek authored
Patch by Jochen Eisinger. llvm-svn: 179758
-
Benjamin Kramer authored
Fixes PR15759. llvm-svn: 179756
-
Benjamin Kramer authored
llvm-svn: 179753
-
Argyrios Kyrtzidis authored
Fixes PR13580. Patch by Serge Pavlov! llvm-svn: 179743
-
Richard Trieu authored
with the silence fix-it comes first. This is more consistent with the rest of the warnings in -Wparentheses. llvm-svn: 179742
-
Richard Trieu authored
llvm-svn: 179740
-
Anna Zaks authored
In the committed example, we now see a note that tells us when the pointer was assumed to be null. This is the only case in which getDerefExpr returned null (failed to get the dereferenced expr) throughout our regression tests. (There were multiple occurrences of this one.) llvm-svn: 179736
-
Anna Zaks authored
[analyzer] Improve dereferenced expression tracking for MemberExpr with a dot and non-reference base llvm-svn: 179734
-
-
Anna Zaks authored
Thanks to Jordan for suggesting the fix. llvm-svn: 179732
-
Anna Zaks authored
[analyzer] Allow TrackConstraintBRVisitor to work when the value it’s tracking is not live in the last node of the path We always register the visitor on a node in which the value we are tracking is live and constrained. However, the visitation can restart at a node, later on the path, in which the value is under constrained because it is no longer live. Previously, we just silently stopped tracking in that case. llvm-svn: 179731
-
Argyrios Kyrtzidis authored
Typo correction for an unqualified name needs to walk through all of the identifier tables of all modules. When we have a global index, just walk its identifier table only. rdar://13425732 llvm-svn: 179730
-
- Apr 17, 2013
-
-
Nico Weber authored
See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html llvm-svn: 179728
-
Daniel Dunbar authored
- We shouldn't even try to include stdint.h in hosted mode, as the dependency on even parsing a platforms stdint.h might fail for some targets. llvm-svn: 179723
-
Fariborz Jahanian authored
is part of the decl-specifier-seq of some other declaration, it doesn't get comment. // rdar://12390371 llvm-svn: 179722
-