| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 243092
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
to consider the storage size of the vector instead of its
sizeof. In other words, ban <3 x int> to <4 x int> casts,
which produced invalid IR anyway.
Also, attempt to be a little more rigorous, or at least
explicit, about when enums are allowed in these casts.
rdar://21901132
llvm-svn: 243069
|
| |
|
|
|
|
|
|
|
| |
Large CFGs cause `checkForFunctionCall()` to overflow its stack. Break
the recursion by manually managing the call stack instead.
Patch by Vedant Kumar!
llvm-svn: 243039
|
| |
|
|
|
|
|
|
|
|
| |
Split out `hasRecursiveCallInPath()` from `checkForFunctionCall()` to
flatten nesting and clarify the code. This also simplifies a follow-up
patch that refactors the other logic in `checkForFunctionCall()`.
Patch by Vedant Kumar!
llvm-svn: 243038
|
| |
|
|
|
|
|
|
| |
(PR24215)
The code will still work as it can reference the function via its thunk.
llvm-svn: 242973
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Create diagnostic for function concept declaration which is not a
definition.
Create diagnostic for concept declaration which isn't in namespace
scope.
Create associated tests.
Reviewers: rsmith, faisalv, fraggamuffin, hubert.reinterpretcast
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D11027
Patch by Nathan Wilson!
llvm-svn: 242899
|
| |
|
|
|
|
| |
C++ modules. Instead, serialize a list of interesting identifiers and mark those ones out of date on module import. Avoiding the identifier lookups here gives a 20-30% speedup in builds with large numbers of modules. No functionality change intended.
llvm-svn: 242868
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Before we skipped that for virtual functions not fully qualified (r81507).
This commit basically reverts this to the older behaviour, which seems
more consistent. We now also correctly consider ill-formed calls to deleted
member functions, which were silently passed before in some cases.
The review contains the whole discussion.
PR: 20268
Differential Revision: http://reviews.llvm.org/D11334
llvm-svn: 242857
|
| |
|
|
|
|
|
|
|
| |
the identifier table. This is redundant, since the TU-scope lookups are also
serialized as part of the TU DeclContext, and wasteful in a number of ways. We
still emit the decls for PCH / preamble builds, since for those we want
identical results, not merely semantically equivalent ones.
llvm-svn: 242855
|
| |
|
|
| |
llvm-svn: 242846
|
| |
|
|
| |
llvm-svn: 242836
|
| |
|
|
| |
llvm-svn: 242835
|
| |
|
|
|
|
|
| |
for OpenMP 4 target data directive parsing and sema.
This commit is on behalf of Kelvin Li.
llvm-svn: 242785
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang used to silently ignore __declspec(novtable). It is implemented
now, but leaving the vtable uninitialized does not work when using the
Itanium ABI, where the class layout for complex class hierarchies is
stored in the vtable. It might be possible to honor the novtable
attribute in some simple cases and either report an error or ignore
it in more complex situations, but it’s not clear if that would be
worthwhile. There is also value in having a simple and predictable
behavior, so this changes clang to simply ignore novtable when not using
the Microsoft C++ ABI.
llvm-svn: 242730
|
| |
|
|
|
|
|
| |
The attribute '__declspec(noalias)' communicates that the function only
accesses memory pointed to by its pointer-typed arguments.
llvm-svn: 242728
|
| |
|
|
| |
llvm-svn: 242670
|
| |
|
|
|
|
|
|
|
| |
(patch by Alexey Frolov)
Improve Sema checking of 9 existing inline asm constraints (‘x’, ‘Y*’, ‘L’, ‘e’, ‘Z’, ‘s’).
Differential Revision: http://reviews.llvm.org/D10536
llvm-svn: 242665
|
| |
|
|
|
|
| |
We now check for the exact range of IdealIndex.
llvm-svn: 242652
|
| |
|
|
|
|
|
| |
to be interesting just because they are the name of a builtin. Reduces the size
of an empty module by over 80% (~100KB).
llvm-svn: 242650
|
| |
|
|
| |
llvm-svn: 242648
|
| |
|
|
|
|
|
|
|
| |
StmtRange was just a convenient wrapper for two StmtIterators before
we had real range support. This removes some of the implicit conversions
StmtRange had leading to slightly more verbose code but also should make
more obvious what's going on. No functional change intended.
llvm-svn: 242615
|
| |
|
|
|
|
|
|
|
|
| |
If we're returning a function parameter, copy elision isn't possible,
so we now warn for redundant move.
PR: 23819
Differential Revision: http://reviews.llvm.org/D11305
llvm-svn: 242600
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some const-correctness changes snuck in here too, since they were in the
area of code I was modifying.
This seems to make Clang actually work without Bus Error on
32bit-sparc.
Follow-up patches will factor out a trailing-object helper class, to
make classes using the idiom of appending objects to other objects
easier to understand, and to ensure (with static_assert) that required
alignment guarantees continue to hold.
Differential Revision: http://reviews.llvm.org/D10272
llvm-svn: 242554
|
| |
|
|
|
|
| |
This (hopefully) brings more clarity. No functional changes (intended).
llvm-svn: 242483
|
| |
|
|
| |
llvm-svn: 242432
|
| |
|
|
|
|
|
|
| |
such a context.
Patch by Andrey Bokhanko!
llvm-svn: 242420
|
| |
|
|
|
|
| |
Add handling of iterators with copy/move constructors with default arguments + converting template constructors.
llvm-svn: 242382
|
| |
|
|
|
|
|
|
| |
has implicit conversions or destruction
Allow to use complex iterators expressions in loops for C++.
llvm-svn: 242285
|
| |
|
|
|
|
|
|
|
|
| |
-fapple-kext is an exception because calls will still go through
the vtable in that mode. Add a note to make the user aware of that.
PR: 23215
Differential Revision: http://reviews.llvm.org/D10935
llvm-svn: 242246
|
| |
|
|
|
|
|
|
|
|
| |
can be different from the normal variable maximum.
Add an error diagnostic for when TLS variables exceed maximum TLS alignment.
Currenty only PS4 sets an explicit maximum TLS alignment.
Patch by Charles Li!
llvm-svn: 242198
|
| |
|
|
|
|
|
|
|
|
|
| |
We referred to all declaration in definitions in our diagnostic messages
which is can be inaccurate. Instead, classify the declaration and emit
an appropriate diagnostic for the new declaration and an appropriate
note pointing to the old one.
This fixes PR24116.
llvm-svn: 242190
|
| |
|
|
|
|
|
|
|
| |
constant
Basically fixed premature testing of integer constraints during template parsing
Reviewed at http://reviews.llvm.org/D10452
llvm-svn: 242175
|
| |
|
|
|
|
| |
If the variable is marked as private in OpenMP construct, the reference to this variable should not keep type qualifiers for the original variable. Private copy is not volatile or constant, so we can use unqualified type for private copy.
llvm-svn: 242133
|
| |
|
|
| |
llvm-svn: 242080
|
| |
|
|
| |
llvm-svn: 242064
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
In the test, y1 is not reference compatible to y2 and we currently assume
the cast is ill-formed so we emit a diagnostic. Instead, in order to honour
the standard, if y1 it's not reference-compatible to y2 then it can't be
converted using a static_cast, and a reinterpret_cast should be tried instead.
Richard Smith provided the correct interpretation of the standard and
explanation about the subtle difference between "can't be cast" and "the cast
is ill-formed". The former applies in this case.
PR: 23802
llvm-svn: 241998
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
It's possible for TagRedeclarations to involve decls without a name,
ie, anonymous enums. We hit some undefined behaviour if we bind these
null names to the reference here.
We never dereference the name, so it's harmless if it's null - make it
a pointer to allow that.
Fixes the Modules/submodules-merge-defs.cpp test under ubsan.
llvm-svn: 241963
|
| |
|
|
| |
llvm-svn: 241924
|
| |
|
|
| |
llvm-svn: 241878
|
| |
|
|
|
|
|
| |
Also fixes a crash (on invalid) member functions with a colon
initializer. PR23948.
llvm-svn: 241811
|
| |
|
|
|
|
|
|
| |
Move the diagnostic back to codegen so that we can compile ATL on the
self-host bot. We don't actually end up emitting code for the __try, so
the diagnostic won't be hit.
llvm-svn: 241761
|
| |
|
|
|
|
| |
underlying types. A visible declaration is enough to make the type complete, but not enough to make the definition visible.
llvm-svn: 241743
|
| |
|
|
| |
llvm-svn: 241664
|
| |
|
|
| |
llvm-svn: 241581
|
| |
|
|
|
|
|
|
|
|
| |
code-completion results,
when appropriate.
rdar://20742295
llvm-svn: 241560
|
| |
|
|
|
|
|
|
| |
implementations.
rdar://20643768
llvm-svn: 241559
|
| |
|
|
|
|
|
|
| |
nullability specifier.
rdar://20755276
llvm-svn: 241558
|
| |
|
|
|
|
| |
rdar://19369529
llvm-svn: 241557
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce co- and contra-variance for Objective-C type parameters,
which allows us to express that (for example) an NSArray is covariant
in its type parameter. This means that NSArray<NSMutableString *> * is
a subtype of NSArray<NSString *> *, which is expected of the immutable
Foundation collections.
Type parameters can be annotated with __covariant or __contravariant
to make them co- or contra-variant, respectively. This feature can be
detected by __has_feature(objc_generics_variance). Implements
rdar://problem/20217490.
llvm-svn: 241549
|
| |
|
|
|
|
|
|
|
|
| |
The __kindof type qualifier can be applied to Objective-C object
(pointer) types to indicate id-like behavior, which includes implicit
"downcasting" of __kindof types to subclasses and id-like message-send
behavior. __kindof types provide better type bounds for substitutions
into unspecified generic types, which preserves more type information.
llvm-svn: 241548
|