Commit Graph

1866 Commits

Author SHA1 Message Date
Mike Stump 0b8c5ae7af Calculate the address point for a vtable better, and start fleshing out the vcall
calculations better.

llvm-svn: 79687
2009-08-21 23:09:30 +00:00
Fariborz Jahanian 8adc973483 Patch to ir-gen copy assigning array members when synthesizing
a copy assignment operator function.

llvm-svn: 79681
2009-08-21 22:34:55 +00:00
Fariborz Jahanian 5626384384 Patch to provide ir-gen support in copying array members
when synthesizing a copy constructor. Arrays's base element
may have a trivial or non-trivial copy constructor.

llvm-svn: 79653
2009-08-21 18:30:26 +00:00
Fariborz Jahanian 7481bd88bb Array member construction in prologue of user-declared
constructors.

llvm-svn: 79640
2009-08-21 17:09:38 +00:00
Fariborz Jahanian 6c9e5a2b9e Introduce getConstantArrayElementCount API and use it in
construction/destruction of array members.

llvm-svn: 79637
2009-08-21 16:31:06 +00:00
Mike Stump a002945a20 We now support overriding base functions in vtables. WIP.
llvm-svn: 79587
2009-08-21 01:45:00 +00:00
Argyrios Kyrtzidis 6032ef1aa3 Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information.
llvm-svn: 79584
2009-08-21 00:31:54 +00:00
Fariborz Jahanian 1a606ab12a Patch to ir-gen destruction of array member elements in revers order
of their construction.

llvm-svn: 79571
2009-08-20 23:02:58 +00:00
Fariborz Jahanian 9c83720d17 ir-gen patch to destruct array members. WIP.
llvm-svn: 79565
2009-08-20 20:54:15 +00:00
Fariborz Jahanian 9a84665921 Using "ObjCImplicitSetterGetterRefExpr" instead of "ObjCImplctSetterGetterRefExpr".
A field rename and more comments.

llvm-svn: 79537
2009-08-20 17:02:02 +00:00
Mike Stump cae6178b3b Refine vbase offsets for the inductive case. Things are now starting
to come together nicely.  Still a WIP.

llvm-svn: 79521
2009-08-20 07:22:17 +00:00
Mike Stump 2220447adc Ensure we don't output repeated vbase offsets. I have a testcase for
this, but need to fixup the actual offset value before I can check it
in.  WIP.

llvm-svn: 79506
2009-08-20 02:11:48 +00:00
Fariborz Jahanian dd46eb770f Test case for my last patch plus a minor clean up.
llvm-svn: 79500
2009-08-20 01:01:06 +00:00
Fariborz Jahanian eeb0e57247 ir-gen for multi-dimensional array construction. WIP.
llvm-svn: 79497
2009-08-20 00:15:15 +00:00
Fariborz Jahanian a8fe2c26a8 Removed unneeded code for break/continue statements in
manufactured for-loop per Anders feedback (thanks).

- Fariborz

llvm-svn: 79466
2009-08-19 21:10:38 +00:00
Fariborz Jahanian 431c883287 ir-gen for constructing arrays as non-static data members. WIP.
llvm-svn: 79464
2009-08-19 20:55:16 +00:00
Daniel Dunbar 58bc48c14e Switch to SmallString::str from SmallString::c_str.
- Several FIXMEs due to non-Twinification of IRBuilder.

llvm-svn: 79455
2009-08-19 20:04:03 +00:00
Mike Stump 3bc0a3bf7d One second thought, I think I want to limit this class to just vtable
building activities.

llvm-svn: 79438
2009-08-19 18:10:47 +00:00
Mike Stump b386941208 Cleanup: fold IndirectPrimary into builder.
llvm-svn: 79423
2009-08-19 14:40:47 +00:00
Mike Stump 3b09f004db We don't want to confuse this layout with the BLayout from the builder.
llvm-svn: 79422
2009-08-19 14:06:50 +00:00
Mike Stump 984c99d190 Restore vbase offsets for classes without a primary.
llvm-svn: 79402
2009-08-19 02:53:08 +00:00
Mike Stump 583ef62149 Refine vcalls a little.
llvm-svn: 79400
2009-08-19 02:06:38 +00:00
Argyrios Kyrtzidis e918926d31 Introduce LocInfoType which is a Sema-specific implementation detail.
This is a Type subclass that can hold a DeclaratorInfo* when we have type source info coming
out of a declarator that we want to preserve. This is used only at the "border" of Parser/Sema for
passing/getting QualTypes, it does not participate in the type system semantics in any way.

llvm-svn: 79394
2009-08-19 01:28:17 +00:00
Argyrios Kyrtzidis 60ed560428 Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema interfaces.
DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.

Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.

llvm-svn: 79392
2009-08-19 01:27:57 +00:00
Mike Stump 6fe6ca11da Cleanup.
llvm-svn: 79374
2009-08-18 22:04:08 +00:00
Mike Stump 494c42526b Add some documentation.
llvm-svn: 79373
2009-08-18 21:59:28 +00:00
Mike Stump 07347353a0 Cleanups. Move GenerateRtti to CodeGenModule.
llvm-svn: 79372
2009-08-18 21:49:00 +00:00
Fariborz Jahanian 19380c4b88 Renamed ClassProp data member of ObjCImplctSetterGetterRefExpr
to InterfaceDecl, as it is unrelated to any property and
holds the InterfaceDecl needed for accessing class getter/setter
methods using the dot-syntax.

llvm-svn: 79371
2009-08-18 21:37:33 +00:00
Mike Stump ee81dca8c7 Move the rest of the vtable building code into the new builder.
llvm-svn: 79370
2009-08-18 21:30:21 +00:00
Mike Stump 1f18b9a301 Suck up method generation.
llvm-svn: 79367
2009-08-18 21:03:28 +00:00
Mike Stump 5cb34077ef Split out vtable bulding code into a builder.
llvm-svn: 79366
2009-08-18 20:50:28 +00:00
Fariborz Jahanian 88cc2340de Renamed ObjCKVCRefExpr to ObjCImplctSetterGetterRefExpr.
Removed an unnecessary loop to get to setters incoming
argument. Added DoxyGen comments. Still more work
to do in this area (WIP).

llvm-svn: 79365
2009-08-18 20:50:23 +00:00
David Chisnall 26657ea8bc Fixed typo in last commit pointed out by Anton.
llvm-svn: 79290
2009-08-17 23:18:30 +00:00
David Chisnall de3a06933d Changes to TargetABIInfo to (hopefully) select the correct calling convention. This has been tested on FreeBSD, and now correctly generates GCC-compatible code for functions returning small structures. Please test it on other platforms!
llvm-svn: 79288
2009-08-17 23:08:21 +00:00
Fariborz Jahanian d172e91f2a Patch to 1) synthesizing non-trivial default destructor when
one is not provided by user. 2) More complete
emission of ctor prologue when it has no initializer
list or when it is synthesized.

llvm-svn: 79269
2009-08-17 19:04:50 +00:00
Anders Carlsson 49033712e4 Remove an ErrorUnsupported call.
llvm-svn: 79261
2009-08-17 18:24:57 +00:00
David Chisnall 9f57c29053 Initial patch to support definitions of id and Class from headers in Objective-C code.
This currently breaks test/SemaObjC/id-isa-ref.m and issues some spurious warnings when you attempt to assign a struct objc_class* value to a Class variable.  The test case probably should fail as it's written, because without the definition of Class the compiler should not assume struct objc_class* is a valid receiver type, but it's left broken because it would be nice if we could get that passing too for the special case of isa.

Approved by snaroff.

llvm-svn: 79248
2009-08-17 16:35:33 +00:00
Anders Carlsson 81f0df9601 Improve handling of delete expressions.
llvm-svn: 79205
2009-08-16 21:13:42 +00:00
Fariborz Jahanian d262eda6fc Patch toward synthesizing non-trivial destructors. WIP
llvm-svn: 79199
2009-08-16 19:36:17 +00:00
Anders Carlsson 3b848940d7 Only do this for initializers of course.
llvm-svn: 79197
2009-08-16 17:54:29 +00:00
Anders Carlsson b80760bd78 Destroy bound temporaries.
llvm-svn: 79196
2009-08-16 17:50:25 +00:00
Anders Carlsson 5b106a7545 Add an IsInitializer flag to EmitAnyExpr. This is used to prevent temporaries from being destroyed when they're bound to a reference variable.
llvm-svn: 79179
2009-08-16 07:36:22 +00:00
Anders Carlsson 157c321b7c No need to append extra padding now that we don't create packed structs for simple cases like the constant string.
llvm-svn: 79178
2009-08-16 05:55:31 +00:00
Mike Stump 22ea1f8a30 Cleanups and fixups for calculating the virtual base offsets. WIP.
llvm-svn: 79156
2009-08-16 01:46:26 +00:00
Fariborz Jahanian 0aed0225b4 Improved on ir-gen for synthesis of non-trivial default
constructor body whose class has non-static data-members which
required non-trivial construction.

llvm-svn: 79125
2009-08-15 18:55:17 +00:00
Eli Friedman 04fddf0d1f Fix for PR4721: adjust CodeGen and ASTContext so that we have a
consistent model for handling size expressions for VLAs.

The model is essentially as follows: VLA types own their associated
expression.  In some cases, we need to create multiple VLA types to 
represent a given VLA (for canonical types, or qualifiers on array types,
or type merging).  If we need to create multiple types based off of 
the same VLA declaration, we use the new refcounting functionality so they can 
all own the expression. The VLASizeMap in CodeGenFunction then uses the size
expression to identify the group of VLA types based off of the same original
declaration.

I'm not particularly attached to the VLA types owning the expression, 
but we're stuck with at least until someone comes up with a way 
to walk the VLA expressions for a declaration.

I did the parallel fix in ASTContext for DependentSizedArrayType, but I 
haven't really looked closely at it, so there might still be issues 
there.

I'll clean up the code duplication in ASTContext in a followup commit.

llvm-svn: 79071
2009-08-15 02:50:32 +00:00
John McCall deb8448690 Disable all recognition of main() in -ffreestanding. Addresses bug #4720.
llvm-svn: 79070
2009-08-15 02:09:25 +00:00
Chris Lattner 8dc7626f9c minor cleanups for VLA stuff.
llvm-svn: 79059
2009-08-15 00:03:43 +00:00
Chris Lattner 19efdd67dd use GetVLASize instead of accessing VLASizeMap directly, this gets an assert if
VLASize isn't populated for the type yet.

llvm-svn: 79057
2009-08-14 23:43:22 +00:00
Devang Patel d4bbb08946 Do now overflow while calulating upper bound for zero sized array.
llvm-svn: 79043
2009-08-14 20:57:45 +00:00