| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
out of ImpCastExprToType and to the caller site
as appropriate. This is in prep. to do more work for
// rdar://14569171
llvm-svn: 187503
|
| |
|
|
| |
llvm-svn: 187467
|
| |
|
|
|
|
| |
err_attribute_argument_type.
llvm-svn: 187420
|
| |
|
|
| |
llvm-svn: 187419
|
| |
|
|
| |
llvm-svn: 187400
|
| |
|
|
|
|
| |
of using custom logic. No functional changes intended.
llvm-svn: 187398
|
| |
|
|
|
|
| |
Patch by Ethan Jackson.
llvm-svn: 187365
|
| |
|
|
|
|
|
|
| |
__builtin_shufflvector don't have the same number of elements or the mask isn't an integer vector.
Previously a diagnostic was issued, but the code went ahead and built the ShuffleVectorExpr. While I'm here also simplify a couple lines by wrapping the return ExprError around the Diag calls.
llvm-svn: 187344
|
| |
|
|
| |
llvm-svn: 187334
|
| |
|
|
|
|
|
|
|
|
| |
This matches how we normally perform semantic analysis for other sorts
of invalid expressions: it means we don't have to reason about invalid
sub-expressions.
Fixes PR16680.
llvm-svn: 187276
|
| |
|
|
|
|
|
| |
no return type is specified, C++11 will deduce a cv-qualified return type in
some cases, but C++1y never will.
llvm-svn: 187275
|
| |
|
|
|
|
| |
return type has already been determined to be a type containing an 'auto'.
llvm-svn: 187266
|
| |
|
|
|
|
| |
Based on patch by Yunzhong Gao.
llvm-svn: 187176
|
| |
|
|
|
|
|
|
| |
It turns out that Plum Hall depends on us not emitting an error on
integer literals which fit into long long, but fit into
unsigned long long. So C99 conformance requires not conforming to C99. :)
llvm-svn: 187172
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sufficient to only consider names visible at the point of instantiation,
because that may not include names that were visible when the template was
defined. More generally, if the instantiation backtrace goes through a module
M, then every declaration visible within M should be available to the
instantiation. Any of those declarations might be part of the interface that M
intended to export to a template that it instantiates.
The fix here has two parts:
1) If we find a non-visible declaration during name lookup during template
instantiation, check whether the declaration was visible from the defining
module of all entities on the active template instantiation stack. The defining
module is not the owning module in all cases: we look at the module in which a
template was defined, not the module in which it was first instantiated.
2) Perform pending instantiations at the end of a module, not at the end of the
translation unit. This is general goodness, since it significantly cuts down
the amount of redundant work that is performed in every TU importing a module,
and also implicitly adds the module containing the point of instantiation to
the set of modules checked for declarations in a lookup within a template
instantiation.
There's a known issue here with template instantiations performed while
building a module, if additional imports are added later on. I'll fix that
in a subsequent commit.
llvm-svn: 187167
|
| |
|
|
|
|
| |
Approval in here http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/064169.html
llvm-svn: 187143
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 187047
|
| |
|
|
|
|
|
|
| |
diagnostic for clarity; updated almost all of the affected test cases.
Thanks to Fariborz Jahanian for the suggestion!
llvm-svn: 186980
|
| |
|
|
| |
llvm-svn: 186966
|
| |
|
|
|
|
| |
Adding missing test cases for the diagnostics.
llvm-svn: 186944
|
| |
|
|
|
|
| |
Added a test case for the diagnostic.
llvm-svn: 186942
|
| |
|
|
|
|
| |
diagnostic. This makes the diagnostic more consistent.
llvm-svn: 186940
|
| |
|
|
|
|
| |
count reported matches reality.
llvm-svn: 186936
|
| |
|
|
|
|
|
| |
* Allow ns, us, ms, s, min, h as numeric ud-suffixes
* Allow s as string ud-suffix
llvm-svn: 186933
|
| |
|
|
|
|
|
|
| |
bool, half, pointers and structs / unions containing any
of these are not allowed. Does not yet reject size_t and
related integer types that are also disallowed.
llvm-svn: 186908
|
| |
|
|
|
|
|
|
| |
Switch some warnings over to errors which should never have been warnings
in the first place. (Also, a minor fix to the preprocessor rules for
integer literals while I'm here.)
llvm-svn: 186903
|
| |
|
|
|
|
|
|
|
|
| |
getLocForEndOfToken() isn't guaranteed to succeed; if it doesn't, make sure
we do something sane.
Fixes PR16673. I'm not sure how to write a testcase for this short of grepping
through the diagnostic output.
llvm-svn: 186889
|
| |
|
|
|
|
| |
Warning should be emitted only for InitListExpr nodes.
llvm-svn: 186859
|
| |
|
|
| |
llvm-svn: 186848
|
| |
|
|
|
|
| |
when initializing aggregate/union types, no matter if static or not.
llvm-svn: 186817
|
| |
|
|
|
|
|
|
|
|
|
|
| |
No functionality change.
In Sema helper functions:
* renamed isTypeName as HasTypenameKeyword
In UsingDecl:
* renamed get/setUsingLocation to get/setUsingLoc
* renamed is/setTypeName as has/setTypename
llvm-svn: 186816
|
| |
|
|
| |
llvm-svn: 186807
|
| |
|
|
|
|
| |
any default template arguments, not if it inherits some.
llvm-svn: 186804
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A constructor for an abstract class does not call constructors for virtual
base classes, so it is not an error if no initializer is present for the
virtual base and the virtual base cannot be default initialized.
Also provide a (disabled by default, for now) warning for the case where a
virtual base class's initializer is ignored in an abstract class's constructor,
and address a defect in DR257 where it was not carried through to C++11's rules
for implicit deletion of special member functions.
Based on a patch by Maurice Bos.
llvm-svn: 186803
|
| |
|
|
|
|
| |
[-Wdocumentation]
llvm-svn: 186802
|
| |
|
|
| |
llvm-svn: 186794
|
| |
|
|
|
|
| |
implicit conversion sequence.
llvm-svn: 186769
|
| |
|
|
|
|
|
|
|
| |
The functionality is equivalent to the GCC attribute. Variables of tagged
types will be warned about as unused if they are not used in any way
except for possible (even non-trivial) ctors/dtors called. Useful for tagging
classes like std::string (which is not part of this commit).
llvm-svn: 186765
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is the same way GenericSelectionExpr works, and it's generally a
more consistent approach.
A large part of this patch is devoted to caching the value of the condition
of a ChooseExpr; it's needed to avoid threading an ASTContext into
IgnoreParens().
Fixes <rdar://problem/14438917>.
llvm-svn: 186738
|
| |
|
|
|
|
|
|
| |
templates and explicit specializations
This patch essentially removes all the FIXMEs following calls to DeduceTemplateArguments() that want to keep track of deduction failure info.
llvm-svn: 186730
|
| |
|
|
|
|
|
|
| |
diagnosis of bad template argument deductions."
This reverts commit a730f548325756d050d4caaa28fcbffdae8dfe95.
llvm-svn: 186729
|
| |
|
|
|
|
|
| |
Make sure we correctly expand packs which expand to another
pack in a function type.
llvm-svn: 186728
|
| |
|
|
|
|
| |
bad template argument deductions.
llvm-svn: 186727
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm not sure how to write a test for this; the following shows the
difference in -ast-dump:
template <int x> struct A {};
template <class T> struct B { };
template <class ...Args> using C = A<(__is_trivially_constructible(Args...))>;
template <class ...Args> using D = C<B<Args>...>;
However, I can't seem to write a test that triggers a visible difference
in behavior.
llvm-svn: 186726
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Canonical types are unchanged. The type printer had to be changed to
avoid printing any non-default implicit calling convention as well as
the calling convention attribute.
Reviewers: rjmccall
Differential Revision: http://llvm-reviews.chandlerc.com/D1132
llvm-svn: 186714
|
| |
|
|
|
|
|
|
|
|
| |
When we see a pack, and replace it with a template argument which is
also a pack, we want to use the pack pattern, not the expanded pack.
The caller should take care of expanding the pack afterwards.
Fixes PR16646.
llvm-svn: 186713
|
| |
|
|
|
|
| |
single diagnostic that selects. No functional changes intended.
llvm-svn: 186708
|
| |
|
|
| |
llvm-svn: 186702
|
| |
|
|
| |
llvm-svn: 186652
|
| |
|
|
| |
llvm-svn: 186647
|