| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 257240
|
| |
|
|
|
|
|
|
|
| |
-Wnull-conversion warning.
These functions are basically equivalent to other pointer returning fuctions
which are already excluded by -Wnull-conversion.
llvm-svn: 257231
|
| |
|
|
|
|
| |
prefix properly.
llvm-svn: 257097
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Given an expression like `(&Foo)();`, we perform overload resolution as
if we are calling `Foo` directly. This causes problems if `Foo` is a
function that can't have its address taken. This patch teaches overload
resolution to ignore functions that can't have their address taken in
such cases.
Differential Revision: http://reviews.llvm.org/D15590
llvm-svn: 257016
|
| |
|
|
|
|
|
|
|
|
| |
instantiating a default argument expression.
This was previously just working implicitly by reinstantiating
in the current context, but caching means that we weren't
registering cleanups in subsequent uses.
llvm-svn: 256996
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By storing the instantiated expression back in the ParmVarDecl,
we remove the last need for separately storing the sub-expression
of a CXXDefaultArgExpr. This makes PCH/Modules merging quite
simple: CXXDefaultArgExpr records are serialized as references
to the ParmVarDecl, and we ignore redundant attempts to overwrite
the instantiated expression.
This has some extremely marginal impact on user-facing semantics.
However, the major effect is that it avoids IRGen errors about
conflicting definitions due to lambdas in the argument being
instantiated multiple times while sharing the same mangling.
It should also slightly improve memory usage and module file size.
rdar://23810407
llvm-svn: 256983
|
| |
|
|
|
|
| |
union member is declared first and the tag name is declared second.
llvm-svn: 256979
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When the condition in an if statement, while statement, or for loop is created
during template instantiation, it calls MakeFullExpr with only the condition
expression. However, when these conditions are created for non-templated
code in the Parser, an additional SourceLocation is passed to MakeFullExpr.
The impact of this was that non-dependent templated code could produce
diagnostics that the same code outside templates would not. Adding the missing
SourceLocation makes diagnostics consistent between templated and non-templated
code.
llvm-svn: 256976
|
| |
|
|
|
|
|
| |
elaborated-type-specifier, create a declaration of it to track that the current
module makes it visible too.
llvm-svn: 256907
|
| |
|
|
|
|
| |
prototype scope in a function definition.
llvm-svn: 256803
|
| |
|
|
|
|
| |
No functionality change is intended
llvm-svn: 256797
|
| |
|
|
|
|
|
|
|
| |
Build up a dependent expression for MS-style inline assembly if the
identifier's type is dependent.
This fixes PR26001.
llvm-svn: 256795
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The MS ABI emits a special default constructor closure thunk if a
default constructor has a weird calling convention or default arguments.
The MS ABI has a quirk: there can be only one such thunk because the
mangling scheme does not have room for distinct manglings. We must
raise a diagnostic in this eventuality.
N.B. MSVC sorta gets this right. Multiple default constructors result
in the default constructor closure getting emitted but they seem to
get confused by which default constructors are reasonable to reference
from the closure. We try to be a little more careful which results in
mild differences in behavior.
llvm-svn: 256661
|
| |
|
|
| |
llvm-svn: 256659
|
| |
|
|
|
|
|
|
| |
by overload resolution because deduction succeeds, but the substituted
parameter type for some parameter (with deduced type) doesn't exactly match the
corresponding adjusted argument type.
llvm-svn: 256657
|
| |
|
|
|
|
| |
dependent, the type is a non-deduced context.
llvm-svn: 256651
|
| |
|
|
|
|
|
|
| |
must be *exactly* zero in order for the conversion to result in 0. This does not involve a conversion through an integer value, and so truncation of the value is not performed.
This patch address PR25876.
llvm-svn: 256643
|
| |
|
|
|
|
| |
OpenMP 4.5 allows to use 'ordered' clause without parameter on 'loop simd' constructs.
llvm-svn: 256639
|
| |
|
|
| |
llvm-svn: 256607
|
| |
|
|
|
|
| |
the using declaration not at the thing it's using.
llvm-svn: 256602
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
declaration. This fixes an issue where we would reject (due to a claimed
ambiguity) a case where lookup finds multiple NamespaceAliasDecls from
different scopes that nominate the same namespace.
The C++ standard doesn't make it clear that such a case is in fact valid (which
I'm working on fixing), but there are no relevant rules that distinguish using
declarations and namespace alias declarations here, so it makes sense to treat
them the same way.
llvm-svn: 256601
|
| |
|
|
|
|
| |
That necessitated moving the OffsetOfNode class out of OffsetOfExpr.
llvm-svn: 256590
|
| |
|
|
| |
llvm-svn: 256576
|
| |
|
|
|
|
|
|
|
|
| |
underlying decls. Preserve the found declaration throughout, and only map to
the underlying declaration when we want to check whether it's the right kind.
This allows us to provide the right source location for the found declaration,
and prepares for the possibility of underlying decls with a different name
from the found decl.
llvm-svn: 256575
|
| |
|
|
|
|
|
|
|
| |
In MS inline asm syntax a label with '$' char produces an error, while in AT&T it does not.
In AT&T inline asm syntax Clang escapes the '$' char and replaces it with "$$". Adopted same approach for MS syntax.
Differential Revision: http://reviews.llvm.org/D15795
llvm-svn: 256545
|
| |
|
|
|
|
|
| |
underlying declaration of a NamedDecl happens to always have the same name
and identifier namespace as the decl itself today).
llvm-svn: 256529
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch fixes PR16677. The latter represents the case when due to
misprinted character class definition occurs in the scope of template
arguments. Base class of this class depends on the template parameter in the
same scope and cannot be resolved, it causes crash. Right behavior is to
make semantic processing even if the definition is wrong, as the code
that emits appropriate message is called after the processing.
llvm-svn: 256511
|
| |
|
|
|
|
|
|
|
| |
OpenMP 4.0-3.1 supports the next format of ‘schedule’ clause: schedule(kind[, chunk_size])
Where kind can be one of ‘static’, ‘dynamic’, ‘guided’, ‘auto’ or ‘runtime’.
OpenMP 4.5 defines the format: schedule([modifier [, modifier]:]kind[, chunk_size])
Modifier can be one of ‘monotonic’, ‘nonmonotonic’ or ‘simd’.
llvm-svn: 256487
|
| |
|
|
|
|
| |
According to OpenMP 4.5 "A linear clause or an ordered clause with a parameter can be specified on a loop directive but not both.""
llvm-svn: 256485
|
| |
|
|
| |
llvm-svn: 256478
|
| |
|
|
| |
llvm-svn: 256463
|
| |
|
|
|
|
|
|
| |
iteration variables.
According to OpenMP the loop iteration variable may not appear in a threadprivate directive.
llvm-svn: 256417
|
| |
|
|
|
|
| |
It broke lldb build.
llvm-svn: 256403
|
| |
|
|
| |
llvm-svn: 256401
|
| |
|
|
| |
llvm-svn: 256400
|
| |
|
|
| |
llvm-svn: 256399
|
| |
|
|
| |
llvm-svn: 256398
|
| |
|
|
|
|
| |
CodeCompleteObjCProtocolReferences. NFC
llvm-svn: 256397
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ASTTemplateArgumentListInfo.
Doing so required separating them so that the former doesn't inherit
from the latter anymore. Investigating that, it became clear that the
inheritance wasn't actually providing real value in any case.
So also:
- Remove a bunch of redundant functions (getExplicitTemplateArgs,
getOptionalExplicitTemplateArgs) on various Expr subclasses which
depended on the inheritance relationship.
- Switched external callers to use pre-existing accessors that return the
data they're actually interested in (getTemplateArgs,
getNumTemplateArgs, etc).
- Switched internal callers to use pre-existing getTemplateKWAndArgsInfo.
llvm-svn: 256359
|
| |
|
|
| |
llvm-svn: 256349
|
| |
|
|
|
|
| |
OpenMP 4.5 adds 'depend(sink:vec)' in 'ordered' directive for doacross loop synchronization. Patch adds parsing and semantic analysis for this clause.
llvm-svn: 256330
|
| |
|
|
| |
llvm-svn: 256319
|
| |
|
|
|
|
| |
switch, this makes the compiler ensure the switch is fully covered. NFC
llvm-svn: 256318
|
| |
|
|
|
|
|
|
|
|
|
| |
If there are two pointers passed to an atomic Builtin,
Clang doesn't allow the second (non-atomic) one to be qualified
with an address space.
Remove this restriction by recording the address space of passed pointers
in atomics type diagnostics.
llvm-svn: 256243
|
| |
|
|
| |
llvm-svn: 256239
|
| |
|
|
|
|
| |
OpenMP 4.5 adds 'depend(sink:vec)' in 'ordered' directive for doacross loop synchronization. Patch adds parsing and semantic analysis for this clause.
llvm-svn: 256238
|
| |
|
|
| |
llvm-svn: 256135
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is complete (with an error produced if not) and a function that merely queries
whether the type is complete. Either way we'll trigger instantiation if
necessary, but only the former will diagnose and recover from missing module
imports.
The intent of this change is to prevent a class of bugs where code would call
RequireCompleteType(..., 0) and then ignore the result. With modules, we must
check the return value and use it to determine whether the definition of the
type is visible.
This also fixes a debug info quality issue: calls to isCompleteType do not
trigger the emission of debug information for a type in limited-debug-info
mode. This allows us to avoid emitting debug information for type definitions
in more cases where we believe it is safe to do so.
llvm-svn: 256049
|
| |
|
|
|
|
|
| |
RequireCompleteType(..., 0) says we're not permitted to do so. The definition
might not be visible, even though we know what it is.
llvm-svn: 256045
|
| |
|
|
|
|
|
|
| |
for the derived class into it. This is mostly just a cleanup, but could in
principle be a bugfix if there is some codepath that reaches here and didn't
previously require a complete type (I couldn't find any such codepath, though).
llvm-svn: 256037
|