| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 185159
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Some valid pre-C++11 constructs change meaning when lexed in C++11
mode, e.g.
#define x(_a) printf("foo"_a);
(example from http://llvm.org/bugs/show_bug.cgi?id=16342). "foo"_a is treated as
a user-defined string literal when parsed in C++11 mode.
In order to deal with this correctly, we need to set lexing mode according to
which standard the code conforms to. We already have a configuration value for
this (FormatStyle.Standard), which seems to be appropriate to use in this case
as well.
Reviewers: klimek
CC: cfe-commits, gribozavr
Differential Revision: http://llvm-reviews.chandlerc.com/D1028
llvm-svn: 185149
|
|
|
|
|
|
| |
module deserialization / merging, and more laziness here is general goodness.
llvm-svn: 185132
|
|
|
|
| |
llvm-svn: 185127
|
|
|
|
| |
llvm-svn: 185119
|
|
|
|
|
|
|
|
|
| |
This replaces a long list of declarations for visitor functions with
a list generated from DeclNodes.inc. Nothing really interesting came
out of it; we had comprehensive coverage anyway
(excluding FriendTemplateDecls).
llvm-svn: 185118
|
|
|
|
|
|
| |
initialized during aggregate initialization of the surrounding structure.
llvm-svn: 185117
|
|
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D1051
llvm-svn: 185115
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
passing arguments in the fixed style.
We have an abstraction for deciding this, but it's (1) deep in
IR-generation, (2) necessarily tied to exact argument lists, and
(3) triggered by unprototyped function types, which we can't
legitimately make in C++ mode. So this solution, wherein Sema
rewrites the function type to an exact prototype but leaves the
variadic bit enabled so as to request x86-64-like platforms to
pass the extra variadic info, is very much a hack, but it's one
that works in practice on the platforms that LLDB will support
in the medium term --- the only place we know of where it's a
problem is instance methods in Windows, where variadic functions
are implicitly cdecl. We may have a more abstracted base on which
to build a solution by then.
rdar://13731520
llvm-svn: 185112
|
|
|
|
|
|
| |
its only caller with a FIXME explaining why it's bogus.
llvm-svn: 185109
|
|
|
|
| |
llvm-svn: 185108
|
|
|
|
| |
llvm-svn: 185103
|
|
|
|
| |
llvm-svn: 185101
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tag with that name in an enclosing scope.
r177473 made us correctly consider only those declarations in the
enclosing namespace scope when looking for a friend declaration. Under
ms-extensions mode, where we do some level of friend injection, this
meant that we were introducing a new tag type into a different scope
than what Microsoft actually does. Address this by only doing the
friend injection when we didn't see any tag with that name in any
outer scope. Fixes <rdar://problem/14250378>.
llvm-svn: 185100
|
|
|
|
| |
llvm-svn: 185098
|
|
|
|
|
|
|
|
| |
* Use a single stat to find out if the file exists and if it is a regular file.
* Use early returns when possible.
* Add comments explaining why we have each check.
llvm-svn: 185091
|
|
|
|
| |
llvm-svn: 185075
|
|
|
|
| |
llvm-svn: 185058
|
|
|
|
|
|
| |
specifically states that the type is incomplete and points to the forward declaration of the incomplete type.
llvm-svn: 185056
|
|
|
|
| |
llvm-svn: 185053
|
|
|
|
| |
llvm-svn: 185042
|
|
|
|
|
|
|
|
|
|
|
|
| |
Armed with a much better understanding of what
TemplateSpecializationTypeLoc::initializeArgLocs actually does, I now
understand that it's fine to just use an empty TemplateArgumentLocInfo
for Integral, Declaration, and NullPtr TemplateArguments.
Fixes PR14281. (The testcases are actually derived from libcxx_test in
deduction-crash.cpp because the original testcase was impossible to reduce.)
llvm-svn: 185038
|
|
|
|
|
|
|
|
| |
side-effect is not sequenced before its value computation. Also fix a
mishandling of ?: expressions where the condition is constant that was
exposed by the tests for this.
llvm-svn: 185035
|
|
|
|
|
|
|
| |
private ivars in class extensions and class
@implementation. // rdar://14278560
llvm-svn: 185025
|
|
|
|
|
|
| |
Fixes -Werror bootstrap.
llvm-svn: 185023
|
|
|
|
|
|
|
|
| |
declaration with no name.
Patch thanks to Robert Wilhelm.
llvm-svn: 185022
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old implementation of ms_struct in RecordLayoutBuilder was a
complete mess: it depended on complicated conditionals which didn't
really reflect the underlying logic, and placed a burden on users of
the resulting RecordLayout. This commit rips out almost all of the
old code, and replaces it with simple checks in
RecordLayoutBuilder::LayoutBitField.
This commit also fixes <rdar://problem/14252115>, a bug where class
inheritance would cause us to lay out bitfields incorrectly.
llvm-svn: 185018
|
|
|
|
| |
llvm-svn: 185013
|
|
|
|
| |
llvm-svn: 184970
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows clang to parse the type_traits header in Visual Studio 2012,
which is included widely in practice.
This is a rework of r163022 by João Matos. The original patch broke
preprocessing of gtest headers, which this patch addresses.
Patch by Will Wilson!
llvm-svn: 184968
|
|
|
|
| |
llvm-svn: 184949
|
|
|
|
| |
llvm-svn: 184936
|
|
|
|
| |
llvm-svn: 184922
|
|
|
|
| |
llvm-svn: 184921
|
|
|
|
| |
llvm-svn: 184918
|
|
|
|
| |
llvm-svn: 184915
|
|
|
|
| |
llvm-svn: 184913
|
|
|
|
| |
llvm-svn: 184912
|
|
|
|
| |
llvm-svn: 184909
|
|
|
|
| |
llvm-svn: 184908
|
|
|
|
| |
llvm-svn: 184907
|
|
|
|
| |
llvm-svn: 184906
|
|
|
|
| |
llvm-svn: 184905
|
|
|
|
|
|
|
| |
declaration. This PCH a little lazier, and breaks a deserialization cycle that
causes crashes with modules enabled.
llvm-svn: 184904
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As noted by Richard in the post:
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130624/082605.html, the following code should not add an entry
into PendingLocalImplicitInstantiations, since local instantiations
should only occur within the context of other instantiations:
int foo(double y) {
struct Lambda {
template<class T> T operator()(T t) const { return t; };
} lambda;
return lambda(y);
}
Hence the attached code does the following:
1) In MarkFunctionReferenced, check if ActiveInstantiations.size()
is non-zero before adding to PendingLocalImplicitInstantiations.
2) In InstantiateFunctionDefinition, we swap out/in
PendingLocalImplicitInstantiations so that only those
pending local instantiations that are added during the instantiation
of the current function are instantiated recursively.
llvm-svn: 184903
|
|
|
|
| |
llvm-svn: 184902
|
|
|
|
| |
llvm-svn: 184896
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before: f(a, b, /*doFoo=*/ false);
Now: f(a, b, /*doFoo=*/false);
This style is a lot more common:
$ ack -H '=\*\/\w' lib | wc -l
1281
$ ack -H '=\*\/ \w' lib | wc -l
70
llvm-svn: 184894
|
|
|
|
|
|
| |
answer until after instantiation. Fixes PR16061!
llvm-svn: 184890
|
|
|
|
|
|
|
| |
Friend declarations that specify a default argument must be a definition
and the only declaration in the translation unit.
llvm-svn: 184889
|