| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
std::vector<int>::allocator_type
When we parse a template-id that names a type, it will become either a
template-id annotation (which is a parsed representation of a
template-id that has not yet been through semantic analysis) or a
typename annotation (where semantic analysis has resolved the
template-id to an actual type), depending on the context. We only
produce a type in contexts where we know that we only need type
information, e.g., in a type specifier. Otherwise, we create a
template-id annotation that can later be "upgraded" by transforming it
into a typename annotation when the parser needs a type. This occurs,
for example, when we've parsed "std::vector<int>" above and then see
the '::' after it. However, it means that when writing something like
this:
  template<> class Outer::Inner<int> { ... };
We have two tokens to represent Outer::Inner<int>: one token for the
nested name specifier Outer::, and one template-id annotation token
for Inner<int>, which will be passed to semantic analysis to define
the class template specialization.
Most of the churn in the template tests in this patch come from an
improvement in our error recovery from ill-formed template-ids.
llvm-svn: 65467
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
global variable) out of GenerateStaticBlockVarDecl. 
 - No intended functionality change.
 - Prep for some mild cleanups and PR3662.
llvm-svn: 65466
 | 
| | 
| 
| 
|  | 
llvm-svn: 65462
 | 
| | 
| 
| 
| 
| 
|  | 
PR3656.
llvm-svn: 65461
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
only from a function definition (that does not have a prototype) are
only used to determine the compatible with other declarations of that
same function. In particular, when referencing the function we pretend
as if it does not have a prototype. Implement this behavior, which
fixes PR3626.
llvm-svn: 65460
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Sema::CheckAssignmentConstraints; not really visible, but the right 
thing to do.
llvm-svn: 65428
 | 
| | 
| 
| 
| 
| 
|  | 
thing is to wire up pools with their contents.
llvm-svn: 65425
 | 
| | 
| 
| 
|  | 
llvm-svn: 65423
 | 
| | 
| 
| 
|  | 
llvm-svn: 65422
 | 
| | 
| 
| 
|  | 
llvm-svn: 65414
 | 
| | 
| 
| 
| 
| 
| 
|  | 
make sure objc2's nonfragile abi is enacted for Leopard too.
add -fobjc-gc-only flag to the image_info symbol.
llvm-svn: 65413
 | 
| | 
| 
| 
| 
| 
|  | 
that end with terminators.
llvm-svn: 65410
 | 
| | 
| 
| 
| 
| 
|  | 
the path than the branches taken.
llvm-svn: 65407
 | 
| | 
| 
| 
| 
| 
|  | 
unit.
llvm-svn: 65403
 | 
| | 
| 
| 
|  | 
llvm-svn: 65401
 | 
| | 
| 
| 
| 
| 
|  | 
string size as an argument.
llvm-svn: 65400
 | 
| | 
| 
| 
|  | 
llvm-svn: 65399
 | 
| | 
| 
| 
|  | 
llvm-svn: 65398
 | 
| | 
| 
| 
|  | 
llvm-svn: 65397
 | 
| | 
| 
| 
|  | 
llvm-svn: 65396
 | 
| | 
| 
| 
|  | 
llvm-svn: 65395
 | 
| | 
| 
| 
| 
| 
|  | 
to SemaInit.cpp, no functionality change.
llvm-svn: 65394
 | 
| | 
| 
| 
| 
| 
| 
|  | 
The big difference here is that (like string literal) @encode has 
array type, not pointer type.
llvm-svn: 65391
 | 
| | 
| 
| 
|  | 
llvm-svn: 65389
 | 
| | 
| 
| 
|  | 
llvm-svn: 65387
 | 
| | 
| 
| 
| 
| 
| 
|  | 
lookup to skip over names without linkage. This finishes
<rdar://problem/6127293>.
llvm-svn: 65386
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
external declarations to also support external variable
declarations. Unified the code for these two cases into two new
subroutines.
Note that we fail to diagnose cases like the one Neil pointed
out, where a visible non-external declaration hides an external
declaration by the same name. That will require some reshuffling of
name lookup.
llvm-svn: 65385
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- For autorelease pool tracking, keep information about the stack of pools
  separate from their contents. Also, keep track of the number of times an
  autorelease pool will send the "release" message to an object when the pool is
  destroyed.
- Update CFRefCount::Update to return a new state instead of a reference count
  binding. This will allow us to implement more complicated semantics with
  autorelease pools.
llvm-svn: 65384
 | 
| | 
| 
| 
| 
| 
| 
|  | 
variables.
 - PR3657.
llvm-svn: 65381
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
- Only handles cases with @try with no @catch blocks, and there are a
   number of problems with the implementation. Nevertheless, this is
   good enough to handled @synchronized correctly, and some other
   basic uses.
llvm-svn: 65378
 | 
| | 
| 
| 
|  | 
llvm-svn: 65376
 | 
| | 
| 
| 
|  | 
llvm-svn: 65374
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
that declaration to global scope so that it can be found from other
scopes. This allows us to diagnose redeclaration errors for external
declarations across scopes. We also warn when name lookup finds such
an out-of-scope declaration. This is part of <rdar://problem/6127293>;
we'll also need to do the same thing for variables.
llvm-svn: 65373
 | 
| | 
| 
| 
|  | 
llvm-svn: 65372
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
(which will call the copy constructor).
Also, since we're creating a new CodeGenFunction object for each block function, we don't need to clear the BreakContinueStack.
llvm-svn: 65371
 | 
| | 
| 
| 
|  | 
llvm-svn: 65370
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
analyzer for array subscript expressions involving bases that are vectors. This
solution is probably a hack: it gets the lvalue of the vector instead of an
rvalue like all other types. This should be reviewed (big FIXME in
GRExprEngine).
llvm-svn: 65366
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
on should only be evaluated once, and it is evaluated outside the cleanup scope.
Also, lift SyncEnter and SyncExit up in nervous anticipation of x86-64
zero cost EH.
llvm-svn: 65362
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- When we are declaring a function in local scope, we can merge with
    a visible declaration from an outer scope if that declaration
    refers to an entity with linkage. This behavior now works in C++
    and properly ignores entities without linkage.
  - Diagnose the use of "static" on a function declaration in local
    scope.
  - Diagnose the declaration of a static function after a non-static
    declaration of the same function.
  - Propagate the storage specifier to a function declaration from a
    prior declaration (PR3425)
  - Don't name-mangle "main"
llvm-svn: 65360
 | 
| | 
| 
| 
|  | 
llvm-svn: 65348
 | 
| | 
| 
| 
| 
| 
|  | 
'method' or 'funciton'.
llvm-svn: 65346
 | 
| | 
| 
| 
| 
| 
|  | 
case where an "Execution continues..." diagnostic could result in an empty message bubble.
llvm-svn: 65342
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
assertion when the ivars and method list was reset into the existing
interface.  To fix this, mark decls as invalid when they are redefined,
and don't insert ivars/methods into invalid decls.
llvm-svn: 65340
 | 
| | 
| 
| 
| 
| 
| 
|  | 
of a pointer to object; This patch does this odd behavior according to
gcc.
llvm-svn: 65334
 | 
| | 
| 
| 
| 
| 
|  | 
- Generate error for protocol qualifiers on non-ObjC types.
llvm-svn: 65333
 | 
| | 
| 
| 
| 
| 
|  | 
Remove support for "Class<P>". Will be making this an error.
llvm-svn: 65332
 | 
| | 
| 
| 
|  | 
llvm-svn: 65331
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This doesn't change the current functionality, but better codifies the
autorelease pool stack itself.
llvm-svn: 65328
 | 
| | 
| 
| 
| 
| 
|  | 
- No functionality change.
llvm-svn: 65325
 | 
| | 
| 
| 
|  | 
llvm-svn: 65322
 |