| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
only a few lines of the file. Also set their properties to have explicitly
native eol sytle.
llvm-svn: 130124
|
|
|
|
|
|
| |
instances of this momentarily.
llvm-svn: 130123
|
|
|
|
|
|
|
|
|
| |
Patch authored by David Abrahams.
These two expression traits (__is_lvalue_expr, __is_rvalue_expr) are used for
parsing code that employs certain features of the Embarcadero C++ compiler.
llvm-svn: 130122
|
|
|
|
|
|
|
|
| |
update.
Despite the diff, nothing but line endings changed here.
llvm-svn: 130121
|
|
|
|
| |
llvm-svn: 130120
|
|
|
|
| |
llvm-svn: 130119
|
|
|
|
| |
llvm-svn: 130118
|
|
|
|
| |
llvm-svn: 130117
|
|
|
|
| |
llvm-svn: 130116
|
|
|
|
|
|
| |
Fixes PR9787.
llvm-svn: 130115
|
|
|
|
|
|
| |
No intended functionality change.
llvm-svn: 130114
|
|
|
|
|
|
| |
change in functionality intended.
llvm-svn: 130113
|
|
|
|
|
|
| |
No change in functionality intended.
llvm-svn: 130112
|
|
|
|
|
|
| |
change in functionality intended.
llvm-svn: 130111
|
|
|
|
|
|
| |
EmitFinalDestCopy() to CharUnits. No change in functionality intended.
llvm-svn: 130110
|
|
|
|
|
|
|
| |
ASTContext::getTypeSize() when only the size part is used. No change in
functionality intended.
llvm-svn: 130109
|
|
|
|
|
|
| |
change in functionality intended.
llvm-svn: 130108
|
|
|
|
|
|
| |
CharUnits. No change in functionality intended.
llvm-svn: 130107
|
|
|
|
|
|
|
| |
CharUnits or replacing the 8s with char align. No change in functionality
intended.
llvm-svn: 130106
|
|
|
|
|
|
| |
correctly in the presence of the ever-annoying linkage specifications.
llvm-svn: 130105
|
|
|
|
|
|
|
|
| |
previous PCH.
Fix anonymous namespaces in PCH.
llvm-svn: 130104
|
|
|
|
|
|
| |
notify any mutation listeners of it. This fixes a crasher in chained PCH, where an implicit destructor in a PCH gets a definition in a chained PCH, which is then lost. However, any further use of the destructor would cause its definition to be regenerated in the final file, hiding the bug.
llvm-svn: 130103
|
|
|
|
|
|
| |
context was empty in the original version. Also, if there are any, tell the context that it has external visible decls. This fixes the problem that a namespace that was empty in the initial PCH (could also happen if the initial PCH didn't include any std header but caused implicit creation of namespace std, e.g. due to implicit declaration of a virtual destructor) never found any declaration declared in *any* chained PCH. Very ugly when the chained PCH includes all that std stuff, as the errors were effectively the same as not including std headers.
llvm-svn: 130102
|
|
|
|
|
|
| |
when parsing global decls. It's still rather broken (skipping much too far when the declarator belongs to a function definition), but at least not so broken as to mismatch braces. Tested by the removal of the fixme in the template test case.
llvm-svn: 130101
|
|
|
|
| |
llvm-svn: 130100
|
|
|
|
| |
llvm-svn: 130099
|
|
|
|
|
|
| |
we attempted to store only new pending instantiations, but our filter was incorrect, dropping implicit instantiations of class template members. It's just not worth coming up with a complex filter that is correct, when the only cost is PCH files that are a few hundred bytes (at most) larger.
llvm-svn: 130098
|
|
|
|
| |
llvm-svn: 130097
|
|
|
|
| |
llvm-svn: 130096
|
|
|
|
| |
llvm-svn: 130095
|
|
|
|
| |
llvm-svn: 130094
|
|
|
|
| |
llvm-svn: 130093
|
|
|
|
| |
llvm-svn: 130092
|
|
|
|
| |
llvm-svn: 130091
|
|
|
|
| |
llvm-svn: 130090
|
|
|
|
|
|
|
|
| |
This fixes 1 error when parsing MSVC 2008 headers with clang.
Must "return true;" even if it is a warning because the rest of the code path assumes that SS is set to something. The parser will get back on its feet and continue parsing the rest of the declaration correctly so it is not a problem.
llvm-svn: 130088
|
|
|
|
|
|
| |
intended.
llvm-svn: 130087
|
|
|
|
| |
llvm-svn: 130086
|
|
|
|
|
|
| |
functionality intended.
llvm-svn: 130085
|
|
|
|
|
|
|
| |
function as a template argument where a pointer to function is wanted.
Just extend the existing hack.
llvm-svn: 130084
|
|
|
|
|
|
|
|
|
|
| |
I've sent off an email requesting clarification on a few things that
I wasn't sure how to handle.
This also necessitated making prefixes and unresolved-prefixes get
mangled separately.
llvm-svn: 130083
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
performs name lookup for an identifier and resolves it to a
type/expression/template/etc. in the same step. This scheme is
intended to improve both performance (by reducing the number of
redundant name lookups for a given identifier token) and error
recovery (by giving Sema a chance to correct type names before the
parser has decided that the identifier isn't a type name). For
example, this allows us to properly typo-correct type names at the
beginning of a statement:
t.c:6:3: error: use of undeclared identifier 'integer'; did you mean
'Integer'?
integer *i = 0;
^~~~~~~
Integer
t.c:1:13: note: 'Integer' declared here
typedef int Integer;
^
Previously, we wouldn't give a Fix-It because the typo correction
occurred after the parser had checked whether "integer" was a type
name (via Sema::getTypeName(), which isn't allowed to typo-correct)
and therefore decided to parse "integer * i = 0" as an expression. By
typo-correcting earlier, we typo-correct to the type name Integer and
parse this as a declaration.
Moreover, in this context, we can also typo-correct identifiers to
keywords, e.g.,
t.c:7:3: error: use of undeclared identifier 'vid'; did you mean
'void'?
vid *p = i;
^~~
void
and recover appropriately.
Note that this is very much a work-in-progress. The new
Sema::ClassifyName is only used for expression-or-declaration
disambiguation in C at the statement level. The next steps will be to
make this work for the same disambiguation in C++ (where
functional-style casts make some trouble), then push it
further into the parser to eliminate more redundant name lookups.
Fixes <rdar://problem/7963833> for C and starts us down the path of
<rdar://problem/8172000>.
llvm-svn: 130082
|
|
|
|
|
|
|
| |
APInt::toString doesn't do those, but it's easy to postprocess that output,
and that's probably better than adding another knob to that method.
llvm-svn: 130081
|
|
|
|
|
|
| |
disabled with -Wno-unused-function.
llvm-svn: 130080
|
|
|
|
|
|
|
| |
should now support all of the C++98 types, and all of the C++0x types
Clang supports.
llvm-svn: 130079
|
|
|
|
|
|
|
|
| |
'__is_literal' type trait for GCC compatibility. At least one relased
version if libstdc++ uses this name for the trait despite it not being
documented anywhere.
llvm-svn: 130078
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
operators in C++ record declarations.
This patch starts off by updating a bunch of the standard citations to
refer to the draft 0x standard so that the semantics intended for move
varianst is clear. Where necessary these are duplicated so they'll be
available in doxygen.
It adds bit fields to keep track of the state for the move constructs,
and updates all the code necessary to track this state (I think) as
members are declared for a class. It also wires the state into the
various trait-like accessors in the AST's API, and tests that the type
trait expressions now behave correctly in the presence of move
constructors and move assignment operators.
This isn't complete yet due to these glaring FIXMEs:
1) No synthesis of implicit move constructors or assignment operators.
2) I don't think we correctly enforce the new logic for both copy and
move trivial checks: that the *selected* copy/move
constructor/operator is trivial. Currently this requires *all* of them
to be trivial.
3) Some of the trait logic needs to be folded into the fine-grained
trivial bits to more closely match the wording of the standard. For
example, many of the places we currently set a bit to track POD-ness
could be removed by querying other more fine grained traits on
demand.
llvm-svn: 130076
|
|
|
|
|
|
|
|
| |
'DerivesHasFoo' types for various non-POD constructs in the base class.
Only __is_pod and __is_trivial are wired up to these, not sure how much
more of this type of exhaustive testing is really interesting.
llvm-svn: 130075
|
|
|
|
|
|
|
|
|
|
| |
non-POD type.
It might be nicer to have a Derives* variant for each of HasCons,
HasCopy, etc. Then we could test each of those and also test the __has_*
traits. WIP.
llvm-svn: 130074
|
|
|
|
|
|
|
|
| |
of the tests using those types to have a (hopefully) more logical
ordering now that doing so doesn't cause unreadable deltas of counters
changing.
llvm-svn: 130073
|