Mike Stump
1db7d04b71
First cut CodeGen support for __block variables.
...
llvm-svn: 65688
2009-02-28 09:07:16 +00:00
Douglas Gregor
89ee6822d8
Eliminate CXXRecordType
...
llvm-svn: 65671
2009-02-28 01:32:25 +00:00
Fariborz Jahanian
cd073cc2e9
Alignment of pointers in __objc_classlist must be on their
...
natural alignment. Otherwise, the excess hole confuses the
objc2 runtime (this is darwin specific).
llvm-svn: 65666
2009-02-28 00:54:00 +00:00
Eli Friedman
015a4742c1
Fix enumeration in switch warnings. No behavior change.
...
llvm-svn: 65659
2009-02-27 23:15:07 +00:00
Mike Stump
537abb0dec
Fix PR3612. We ensure that we add builtins to the GlobalDeclMap and
...
we ensure that things added to the module can be found even when they
are not in GlobalDeclMap. The later is for increased flexibility,
should someone want to do something tricky like extern "Ada" in the
same module.
llvm-svn: 65657
2009-02-27 22:42:30 +00:00
Eli Friedman
988a16b9b8
Change the AST generated for offsetof a bit so that it looks like a
...
normal expression, and change Evaluate and IRGen to evaluate it like a
normal expression. This simplifies the code significantly, and fixes
PR3396.
llvm-svn: 65622
2009-02-27 06:44:11 +00:00
Eli Friedman
8f5f4ea466
Change the way clang generates union types a bit so it plays well
...
with the LLVM C backend.
llvm-svn: 65615
2009-02-27 04:53:40 +00:00
Eli Friedman
97e070ed68
Minor cleanup: use getDeclAlignInBytes helper.
...
llvm-svn: 65611
2009-02-27 04:11:37 +00:00
Douglas Gregor
deaad8cc34
Create a new TypeNodes.def file that enumerates all of the types,
...
giving them rough classifications (normal types, never-canonical
types, always-dependent types, abstract type representations) and
making it far easier to make sure that we've hit all of the cases when
decoding types.
Switched some switch() statements on the type class over to using this
mechanism, and filtering out those things we don't care about. For
example, CodeGen should never see always-dependent or non-canonical
types, while debug info generation should never see always-dependent
types. More switch() statements on the type class need to be moved
over to using this approach, so that we'll get warnings when we add a
new type then fail to account for it somewhere in the compiler.
As part of this, some types have been renamed:
TypeOfExpr -> TypeOfExprType
FunctionTypeProto -> FunctionProtoType
FunctionTypeNoProto -> FunctionNoProtoType
There shouldn't be any functionality change...
llvm-svn: 65591
2009-02-26 23:50:07 +00:00
Chris Lattner
d42c29f9a2
fix some sema problems with wide strings and hook up basic codegen for them.
...
llvm-svn: 65582
2009-02-26 23:01:51 +00:00
Fariborz Jahanian
ec3385733a
Couple of meta-data segments were wrong. This patch fixes them.
...
llvm-svn: 65578
2009-02-26 22:30:39 +00:00
Devang Patel
f4c205b2fa
Add support to emit debug info for objective-c interfaces.
...
(This is not yet used.)
llvm-svn: 65573
2009-02-26 21:10:26 +00:00
Daniel Dunbar
76ba41ce4f
Add Type::hasPointerRepresentation predicate.
...
- For types whose native representation is a pointer.
- Use to replace ExprConstant.cpp:HasPointerEvalType,
CodeGenFunction::isObjCPointerType.
llvm-svn: 65569
2009-02-26 20:52:22 +00:00
Daniel Dunbar
d26d5c220b
Remove PointerLikeType.
...
- Having pointers and references share a base was not a useful
notion.
llvm-svn: 65567
2009-02-26 19:54:52 +00:00
Daniel Dunbar
201351933a
Change PointersToResolve to list the pointee type to resolve, not the
...
pointer type.
- Drops use of PointerLikeType.
- No intended functionality change.
llvm-svn: 65566
2009-02-26 19:48:14 +00:00
Daniel Dunbar
e2617d97a5
Drop uses of isPointerLikeType.
...
- No functionality change.
llvm-svn: 65560
2009-02-26 19:03:24 +00:00
Fariborz Jahanian
03b300b734
Fix an inconsistance in objc2's meta-data related to
...
the symbol for the root meta-data.
llvm-svn: 65548
2009-02-26 18:23:47 +00:00
Anders Carlsson
600183db9e
Classify enum types correctly
...
llvm-svn: 65533
2009-02-26 17:31:15 +00:00
Daniel Dunbar
b98d1f7140
x86_64 ABI: Qualified id types are passed as pointers.
...
- <rdar://problem/6622451> Bad x86_64 code gen for message call taking one argument.
llvm-svn: 65510
2009-02-26 07:21:35 +00:00
Mike Stump
b750d928ce
CodeGen support for copied BlockDeclRefExprs.
...
llvm-svn: 65487
2009-02-25 23:33:13 +00:00
Daniel Dunbar
4208835eec
Temporarily disable clearing of insert point (to indicate unreachable
...
code) when calling noreturn functions; general expression emission
isn't ready to do the right thing in all cases.
llvm-svn: 65473
2009-02-25 20:59:29 +00:00
Daniel Dunbar
1cdbc5404b
Allow constant initializers to reference their defining decl.
...
- PR3662.
llvm-svn: 65472
2009-02-25 20:08:33 +00:00
Daniel Dunbar
a374e60e57
Fold GeneraticStaticBlockVarDecl into callers.
...
- No functionality change.
llvm-svn: 65470
2009-02-25 19:45:19 +00:00
Daniel Dunbar
22a87f94a9
Pull COdeGenFunction::CreateStaticBlockVarDecl (just for creating the
...
global variable) out of GenerateStaticBlockVarDecl.
- No intended functionality change.
- Prep for some mild cleanups and PR3662.
llvm-svn: 65466
2009-02-25 19:24:29 +00:00
Devang Patel
410dc00184
Fix comments.
...
llvm-svn: 65423
2009-02-25 01:36:11 +00:00
Devang Patel
9d7d17a8ec
Enable debug info emission for objc methods.
...
llvm-svn: 65422
2009-02-25 01:09:46 +00:00
Fariborz Jahanian
240f2b7851
patch for two things.
...
make sure objc2's nonfragile abi is enacted for Leopard too.
add -fobjc-gc-only flag to the image_info symbol.
llvm-svn: 65413
2009-02-24 23:34:44 +00:00
Devang Patel
ab19ecad22
If Loc is invalid (e.g. "self" in Objective-C) then use MainFileID's compile unit.
...
llvm-svn: 65403
2009-02-24 23:16:03 +00:00
Chris Lattner
d7e7b8e411
first wave of fixes for @encode sema support. This is part of PR3648.
...
The big difference here is that (like string literal) @encode has
array type, not pointer type.
llvm-svn: 65391
2009-02-24 22:18:39 +00:00
Fariborz Jahanian
6fe4306195
Set flag for -fobjc-gc in IMAGE_INFO variable.
...
llvm-svn: 65387
2009-02-24 21:08:09 +00:00
Daniel Dunbar
d4ecca135a
Fix IRgen of constant expressions referring to external/static
...
variables.
- PR3657.
llvm-svn: 65381
2009-02-24 18:41:57 +00:00
Daniel Dunbar
0b0dcd987d
Some initial Obj-C zero cost EH support.
...
- 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
2009-02-24 07:47:38 +00:00
Daniel Dunbar
36ae309434
Add a note about an IRgen optimization opportunity.
...
llvm-svn: 65376
2009-02-24 06:34:04 +00:00
Anders Carlsson
729a8202d0
Prevent accidental copying of CodeGenFunction and CodeGenModule.
...
llvm-svn: 65372
2009-02-24 04:21:31 +00:00
Anders Carlsson
b9c9e1d16f
Pass the CodeGenModule object to GenerateBlockFunction, instead of *this (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
2009-02-24 04:19:41 +00:00
Mike Stump
18e91257e4
Ensure that we can't break or continue out of a block.
...
llvm-svn: 65370
2009-02-24 02:59:30 +00:00
Daniel Dunbar
94ceb61574
Fix two @synchronized bugs found by inspection: the expression to sychronize 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
2009-02-24 01:43:46 +00:00
Douglas Gregor
e62c0a45dd
Improve merging of function declarations. Specifically:
...
- 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
2009-02-24 01:23:02 +00:00
Fariborz Jahanian
392124c78e
We should not generate __weak write barrier on indirect reference
...
of a pointer to object; This patch does this odd behavior according to
gcc.
llvm-svn: 65334
2009-02-23 18:59:50 +00:00
Daniel Dunbar
1234749853
Add low level support for generating invoke instead of calls.
...
- No functionality change.
llvm-svn: 65325
2009-02-23 17:26:39 +00:00
Anders Carlsson
e14282e274
Make sure to reset the DidCallStackSave variable before emitting a compound statement. Fixes PR3649.
...
llvm-svn: 65291
2009-02-22 18:44:21 +00:00
Fariborz Jahanian
0773533b27
More objc gc work. Match gcc's treatment of ivar access
...
true a local pointer to objective-c object in generating
write barriers.
llvm-svn: 65290
2009-02-22 18:40:18 +00:00
Mike Stump
e8b2d066ea
Copy some clenaups from Eli to code that I copied. :-)
...
llvm-svn: 65286
2009-02-22 13:55:31 +00:00
Mike Stump
624497c29a
Cleanp code with some recent suggestions.
...
llvm-svn: 65285
2009-02-22 13:27:11 +00:00
Daniel Dunbar
bb525c3c7f
x86_64 ABI: Actually, we can always pass things we want to pass in
...
memory using Indirect; this was a holdover from when CGCall wasn't as
robust.
llvm-svn: 65278
2009-02-22 08:17:51 +00:00
Eli Friedman
825fe7565e
Eliminate a bunch of code which should be dead.
...
llvm-svn: 65267
2009-02-22 07:29:04 +00:00
Daniel Dunbar
075d642e24
x86_64 ABI: Make sure to pass vectors that we want to pass in memory
...
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
2009-02-22 07:22:25 +00:00
Daniel Dunbar
c64c481d18
x86_64 ABI: Pass 32-bit vectors as Integer to match gcc. We don't care
...
about these much but <2 x i16> shows up in the gcc test suite.
llvm-svn: 65264
2009-02-22 04:48:22 +00:00
Daniel Dunbar
f25afad9e5
x86_64 ABI: Classify <1 x i64> as INTEGER (match gcc not llvm-gcc).
...
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
2009-02-22 04:16:10 +00:00
Eli Friedman
34ef305759
Last part of PR3254: use the same alignment computation in Sema and
...
CodeGen. I'm not sure whether this actually makes any visible
difference, but it's better to be consistent anyway.
llvm-svn: 65259
2009-02-22 03:23:43 +00:00