| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
getDesguaredType(). Constify some pointers along the way.
llvm-svn: 65321
|
|
|
|
|
|
|
| |
I don't think casting super makes any sense (since it won't effect method lookup).
Will discuss with other offline and decide what to do.
llvm-svn: 65317
|
|
|
|
| |
llvm-svn: 65305
|
|
|
|
|
|
| |
objects (opt for false negatives).
llvm-svn: 65304
|
|
|
|
| |
llvm-svn: 65302
|
|
|
|
|
|
| |
DoNothing effect.
llvm-svn: 65301
|
|
|
|
|
|
| |
messages to 'Class'. Also improve "super" handling.
llvm-svn: 65300
|
|
|
|
| |
llvm-svn: 65293
|
|
|
|
|
|
|
|
|
|
| |
<rdar://problem/6497631> Message lookup is sometimes different than gcc's).
- Implement instance/class overloading in ObjCContainerDecl (removing a FIXME). This involved hacking NamedDecl::declarationReplaces(), which took awhile to figure out (didn't realize replace was the default).
- Changed Sema::ActOnInstanceMessage() to remove redundant warnings when dealing with protocols. For now, I've omitted the "protocol" term in the diagnostic. It simplifies the code flow and wan't always 100% accurate (e.g. "Foo<Prot>" looks in the class interface, not just the protocol).
- Changed several test cases to jive with the above changes.
llvm-svn: 65292
|
|
|
|
|
|
| |
statement. Fixes PR3649.
llvm-svn: 65291
|
|
|
|
|
|
|
| |
true a local pointer to objective-c object in generating
write barriers.
llvm-svn: 65290
|
|
|
|
| |
llvm-svn: 65286
|
|
|
|
| |
llvm-svn: 65285
|
|
|
|
|
|
| |
someone would reasonably expect Evaluate to handle for C/ObjC.
llvm-svn: 65284
|
|
|
|
|
|
|
| |
memory using Indirect; this was a holdover from when CGCall wasn't as
robust.
llvm-svn: 65278
|
|
|
|
|
|
| |
copy 'rule' if it doesn't already start with 'init', etc.
llvm-svn: 65269
|
|
|
|
| |
llvm-svn: 65267
|
|
|
|
|
|
|
|
|
| |
as byval. Otherwise LLVM will have its own opinion about where to put
things.
We now pass all gcc dg.compat tests on x86_64.
llvm-svn: 65266
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
helper isConstantInitializer) to check whether an initializer is
constant. This passes tests, but it's possible that it'll cause
regressions with real-world code.
Future work:
1. The diagnostics obtained this way are lower quality at the moment;
some work both here and in Evaluate is needed for accurate diagnostics.
2. We probably need some extra code when we're in -pedantic mode so we
can strictly enforce the rules in C99 6.6p7.
3. Dead code cleanup (this should wait until after 2, because we might
want to re-use some of the code).
llvm-svn: 65265
|
|
|
|
|
|
| |
about these much but <2 x i16> shows up in the gcc test suite.
llvm-svn: 65264
|
|
|
|
|
|
|
| |
Also, make sure to pass <1 x i64> as i64 (not <1 x i64>, which doesn't
quite work yet in the backend).
llvm-svn: 65262
|
|
|
|
|
|
|
|
| |
I know, these follow the exact same rules as pointers, so I just made
them use the same codepath. Someone more familiar with ObjC should
double-check this, though.
llvm-svn: 65261
|
|
|
|
|
|
| |
partially done in r65258.)
llvm-svn: 65260
|
|
|
|
|
|
|
| |
CodeGen. I'm not sure whether this actually makes any visible
difference, but it's better to be consistent anyway.
llvm-svn: 65259
|
|
|
|
|
|
|
|
|
| |
PR3254 and part of PR3433.
The isICE changes are necessary to keep the computed results
consistent with Evaluate.
llvm-svn: 65258
|
|
|
|
| |
llvm-svn: 65257
|