| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 179862
|
| |
|
|
| |
llvm-svn: 179861
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
specification as discussed on cxx-abi-dev.
llvm-svn: 179858
|
| |
|
|
| |
llvm-svn: 179846
|
| |
|
|
|
|
| |
This reverts commit r179837 as it seems to be causing test failures.
llvm-svn: 179839
|
| |
|
|
|
|
| |
More changes later for using declarations/DW_TAG_imported_declaration.
llvm-svn: 179837
|
| |
|
|
|
|
|
| |
Not that the DI* hierarchy is terribly type safe, but this makes the contract a
little clearer I think.
llvm-svn: 179835
|
| |
|
|
| |
llvm-svn: 179823
|
| |
|
|
|
|
|
|
| |
given cursor is a variadic function or method.
rdar://13667150
llvm-svn: 179819
|
| |
|
|
|
|
|
| |
initialized temporaries to objc++ methods.
// rdar://12788429
llvm-svn: 179818
|
| |
|
|
|
|
|
|
|
|
| |
Qualifiers' written next to the return and
parameter types in an ObjC method declarations.
rdar://13676977
llvm-svn: 179816
|
| |
|
|
| |
llvm-svn: 179811
|
| |
|
|
| |
llvm-svn: 179806
|
| |
|
|
|
|
|
|
| |
written attributes in a property declaration.
rdar://13684512
llvm-svn: 179803
|
| |
|
|
|
|
|
|
| |
-Wunitnitialized warning.
Patch by Rui Ueyama.
llvm-svn: 179794
|
| |
|
|
|
|
|
| |
Objective-C dictionary literals has bad syntax for the
separator. // rdar://10679157
llvm-svn: 179784
|
| |
|
|
| |
llvm-svn: 179782
|
| |
|
|
| |
llvm-svn: 179781
|
| |
|
|
| |
llvm-svn: 179777
|
| |
|
|
|
|
| |
method not called.
llvm-svn: 179776
|
| |
|
|
|
|
|
|
| |
generator.
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
|
| |
|
|
| |
llvm-svn: 179770
|
| |
|
|
|
|
|
|
|
| |
pointer types.
Patch by Doug.
rdar://13684618
llvm-svn: 179769
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 179762
|
| |
|
|
|
|
| |
Patch by Jochen Eisinger.
llvm-svn: 179758
|
| |
|
|
|
|
| |
Fixes PR15759.
llvm-svn: 179756
|
| |
|
|
| |
llvm-svn: 179753
|
| |
|
|
|
|
| |
Fixes PR13580. Patch by Serge Pavlov!
llvm-svn: 179743
|
| |
|
|
|
|
|
| |
with the silence fix-it comes first. This is more consistent with the rest
of the warnings in -Wparentheses.
llvm-svn: 179742
|
| |
|
|
| |
llvm-svn: 179740
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
dot and non-reference base
llvm-svn: 179734
|
| |
|
|
| |
llvm-svn: 179733
|
| |
|
|
|
|
|
|
| |
type of the expression.
Thanks to Jordan for suggesting the fix.
llvm-svn: 179732
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html
llvm-svn: 179728
|
| |
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
| |
is part of the decl-specifier-seq of some other declaration,
it doesn't get comment. // rdar://12390371
llvm-svn: 179722
|
| |
|
|
| |
llvm-svn: 179720
|
| |
|
|
|
|
|
|
|
|
|
| |
The system_header pragma (from GCC) is implemented using line notes in the
source manager. However, a line note's line number specifies the number
not for the current line, but for the next line. This was making all
line numbers appear off by one after the pragma.
Reported by Andy Gibbs, uncovered during r179677.
llvm-svn: 179709
|
| |
|
|
|
|
| |
arguments in the formation of a candidate set of inheriting constructors.
llvm-svn: 179708
|
| |
|
|
| |
llvm-svn: 179701
|
| |
|
|
|
|
|
|
|
|
|
| |
This was slightly tricky because BlockDecls don't currently store an
inferred return type. However, we can rely on the fact that blocks with
inferred return types will have return statements that match the inferred
type.
<rdar://problem/13665798>
llvm-svn: 179699
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Added BreakableLineComment, moved common code from
BreakableBlockComment to newly added BreakableComment. As a side-effect of the
rewrite, found another problem with escaped newlines and had to change
code which removes trailing whitespace from line comments not to break after
this patch.
Reviewers: klimek, djasper
Reviewed By: klimek
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D682
llvm-svn: 179693
|
| |
|
|
|
|
| |
TLS support.
llvm-svn: 179692
|
| |
|
|
| |
llvm-svn: 179688
|