| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
other intrinsic headers.
llvm-svn: 147242
|
| |
|
|
| |
llvm-svn: 147240
|
| |
|
|
| |
llvm-svn: 147237
|
| |
|
|
| |
llvm-svn: 147236
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Explicit instantiations following specializations are no-ops and hence have
no PointOfInstantiation. That was done correctly in most cases, but for a
specialization -> instantiation decl -> instantiation definition chain, the
definition didn't realize that it was a no-op. Fix that.
Also, when printing diagnostics for these no-ops, get the diag location from
the decl name location.
Add many test cases, one of them not yet passing (but it failed the same way
before this change). Fixes http://llvm.org/pr11558 and more.
llvm-svn: 147225
|
| |
|
|
| |
llvm-svn: 147219
|
| |
|
|
|
|
|
|
| |
good parser error recovery and for not crashing.
We still have a accepts-invalid-code bug.
llvm-svn: 147216
|
| |
|
|
|
|
|
| |
building related objc ASTs which require a class definition AST.
These were uncovered when testing objc rewriter.
llvm-svn: 147210
|
| |
|
|
|
|
|
|
| |
found within that umbrella directory that were not actually included
by the umbrella header. They should either be referenced in the module
map or included by the umbrella header.
llvm-svn: 147207
|
| |
|
|
| |
llvm-svn: 147203
|
| |
|
|
|
|
|
| |
This works like described in http://drdobbs.com/blogs/cpp/231602010
Fixes http://llvm.org/PR11609
llvm-svn: 147202
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
set of (previously-canonical) declaration IDs to the module file, so
that future AST reader instances that load the module know which
declarations are merged. This is important in the fairly tricky case
where a declaration of an entity, e.g.,
@class X;
occurs before the import of a module that also declares that
entity. We merge the declarations, and record the fact that the
declaration of X loaded from the module was merged into the (now
canonical) declaration of X that we parsed.
llvm-svn: 147181
|
| |
|
|
| |
llvm-svn: 147179
|
| |
|
|
|
|
|
| |
class that comes from a different module file, make sure that we load
all of the pending declarations for the original declaration.
llvm-svn: 147168
|
| |
|
|
|
|
| |
the clang driver to enable this when assembling a .s file. rdar://9275556
llvm-svn: 147167
|
| |
|
|
| |
llvm-svn: 147156
|
| |
|
|
|
|
| |
expressoins of the form T{args}.
llvm-svn: 147155
|
| |
|
|
|
|
| |
overloading, initializer_list.
llvm-svn: 147145
|
| |
|
|
| |
llvm-svn: 147141
|
| |
|
|
|
|
| |
Robert Purves.
llvm-svn: 147139
|
| |
|
|
|
|
|
|
|
|
| |
\<newline><newline>
don't consume the second newline.
Thanks to David Blaikie for pointing out the crash!
llvm-svn: 147138
|
| |
|
|
| |
llvm-svn: 147137
|
| |
|
|
|
|
| |
definition would satisfy the constexpr requirements.
llvm-svn: 147128
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declaration of that same class that either came from some other module
or occurred in the translation unit loading the module. In this case,
we need to merge the two redeclaration chains immediately so that all
such declarations have the same canonical declaration in the resulting
AST (even though they don't in the module files we've imported).
Focusing on Objective-C classes until I'm happy with the design, then
I'll both (1) extend this notion to other kinds of declarations, and
(2) optimize away this extra checking when we're not dealing with
modules. For now, doing this checking for PCH files/preambles gives us
better testing coverage.
llvm-svn: 147123
|
| |
|
|
|
|
| |
by string literals.
llvm-svn: 147120
|
| |
|
|
|
|
| |
blocks.
llvm-svn: 147116
|
| |
|
|
| |
llvm-svn: 147112
|
| |
|
|
|
|
| |
compound literals.
llvm-svn: 147111
|
| |
|
|
|
|
|
|
|
|
| |
the buffer
when the end of the buffer is immediately after an escaped newline.
Fixes http://llvm.org/PR10153.
llvm-svn: 147091
|
| |
|
|
|
|
|
| |
because of recent refactoring and one in the
rewriter.
llvm-svn: 147070
|
| |
|
|
|
|
|
|
|
|
| |
expanded
token locations as coming before the closing ')' of a function macro expansion.
Include a unit test for SourceManager.
llvm-svn: 147056
|
| |
|
|
|
|
| |
intrinsics.
llvm-svn: 147048
|
| |
|
|
| |
llvm-svn: 147047
|
| |
|
|
|
|
| |
constant expressions.
llvm-svn: 147035
|
| |
|
|
|
|
|
|
| |
- constexpr function template instantiations
- variables of reference type
- constexpr variables
llvm-svn: 147031
|
| |
|
|
| |
llvm-svn: 147030
|
| |
|
|
|
|
| |
expression we can't support. In a slightly amusing twist, the case in question was already in the clang regression tests marked as a valid construct. <rdar://problem/10020074>
llvm-svn: 147026
|
| |
|
|
|
|
|
|
| |
members of class templates so that their values can be used in ICEs. This
required reverting r105465, to get such instantiated members to be included in
serialized ASTs.
llvm-svn: 147023
|
| |
|
|
|
|
|
|
| |
reasonable-looking but ill-formed for-range statement of the form:
for (expression : expression)
llvm-svn: 147006
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
type is a pointer to const. (radar://10595327)
The regions corresponding to the pointer and reference arguments to
a function get invalidated by the calls since a function call can
possibly modify the pointed to data. With this change, we are not going
to invalidate the data if the argument is a pointer to const. This
change makes the analyzer more optimistic in reporting errors.
(Support for C, C++ and Obj C)
llvm-svn: 147002
|
| |
|
|
|
|
| |
in class method instead of crash. // rdar://10593227
llvm-svn: 146998
|
| |
|
|
|
|
|
| |
notify the AST deserialization listener so that the AST writer knows
that it can write the macro definition.
llvm-svn: 146994
|
| |
|
|
| |
llvm-svn: 146993
|
| |
|
|
| |
llvm-svn: 146988
|
| |
|
|
|
|
| |
Patch by Dimitry Andric!
llvm-svn: 146982
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
visibility restrictions. This ensures that all declarations of the
same entity end up in the same redeclaration chain, even if some of
those declarations aren't visible. While this may seem unfortunate to
some---why can't two C modules have different functions named
'f'?---it's an acknowedgment that a module does not introduce a new
"namespace" of names.
As part of this, stop merging the 'module-private' bit from previous
declarations to later declarations, because we want each declaration
in a module to stand on its own because this can effect, for example,
submodule visibility.
Note that this notion of names that are invisible to normal name
lookup but are available for redeclaration lookups is how we should
implement friend declarations and extern declarations within local
function scopes. I'm not tackling that problem now.
llvm-svn: 146980
|
| |
|
|
|
|
| |
the definition of that class. Fixes PR11613 / <rdar://problem/10604077>.
llvm-svn: 146976
|
| |
|
|
|
|
| |
unneeded builtins for SSE pcmp. Change SSE pcmpeqq and pcmpgtq to not use builtins and just use vector == and >.
llvm-svn: 146969
|
| |
|
|
| |
llvm-svn: 146961
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split out a new ExpressionEvaluationContext flag for this case, and don't treat
it as unevaluated in C++11. This fixes some crash-on-invalids where we would
allow references to class members in potentially-evaluated constant expressions
in static member functions, and also fixes half of PR10177.
The fix to PR10177 exposed a case where template instantiation failed to provide
a source location for a diagnostic, so TreeTransform has been tweaked to supply
source locations when transforming a type. The source location is still not very
good, but MarkDeclarationsReferencedInType would need to operate on a TypeLoc to
improve it further.
Also fix MarkDeclarationReferenced in C++98 mode to trigger instantiation for
static data members of class templates which are used in constant expressions.
This fixes a link-time problem, but we still incorrectly treat the member as
non-constant. The rest of the fix for that issue is blocked on PCH support for
early-instantiated static data members, which will be added in a subsequent
patch.
llvm-svn: 146955
|