| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
No new diagnostics, just better wording and notes pointing at more
relevant locations.
llvm-svn: 186629
|
| |
|
|
|
|
| |
changes intended.
llvm-svn: 186591
|
| |
|
|
|
|
| |
diagnostic's select list. Updates the tests for the more consistent diagnostic.
llvm-svn: 186584
|
| |
|
|
|
|
| |
with other attribute handlers, as well as other attribute error messages. Added missing test cases for the unavailable attribute, and updated the deprecated test case.
llvm-svn: 186578
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
r186331).
Original commit log:
If we friend a declaration twice, that should not make it visible to
name lookup in the surrounding context. Slightly rework how we handle
friend declarations to inherit the visibility of the prior
declaration, rather than setting a friend declaration to be visible
whenever there was a prior declaration.
llvm-svn: 186546
|
| |
|
|
| |
llvm-svn: 186537
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
cl.exe treats wide bitfields as an error. This patch causes them to be
an error if IsMsStruct is true, as it is in straight C.
Patch by Warren Hunt!
Reviewers: eli.friedman
Differential Revision: http://llvm-reviews.chandlerc.com/D1125
llvm-svn: 186536
|
| |
|
|
|
|
| |
on the selector name.
llvm-svn: 186524
|
| |
|
|
| |
llvm-svn: 186523
|
| |
|
|
| |
llvm-svn: 186522
|
| |
|
|
| |
llvm-svn: 186474
|
| |
|
|
|
|
|
|
|
|
| |
Sema needs to be able to accurately determine what will be
emitted as a constant initializer and what will not, so
we get accurate errors in C and accurate -Wglobal-constructors
warnings in C++. This makes Expr::isConstantInitializer match
CGExprConstant as closely as possible.
llvm-svn: 186464
|
| |
|
|
|
|
|
| |
parameters in ArrayRef'ize Sema::ActOnAtEnd to ArrayRef.
Patch by Robert Wilhelm.
llvm-svn: 186421
|