1716 Commits

Author SHA1 Message Date
Fariborz Jahanian
d375454dcf ir-gen for nested non-virtual base member access
in current class.

llvm-svn: 77554
2009-07-30 00:10:25 +00:00
Douglas Gregor
716dabbb1b Eliminate an unused-variable warning
llvm-svn: 77518
2009-07-29 22:40:58 +00:00
Owen Anderson
9793f0e4d7 Update for LLVM API change.
llvm-svn: 77514
2009-07-29 22:16:19 +00:00
Ted Kremenek
c23c7e6a51 Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsRecordType() -> Type::getAs<RecordType>()
  Type::getAsPointerType() -> Type::getAs<PointerType>()
  Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
  Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
  Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
  Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
  Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsTagType() -> Type::getAs<TagType>()
  
And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.

llvm-svn: 77510
2009-07-29 21:53:49 +00:00
Owen Anderson
ade90fd1ba Update for LLVM API change.
llvm-svn: 77492
2009-07-29 18:54:39 +00:00
Fariborz Jahanian
7be1ad814b No longer need to keep base class offsets in the offset
table as it has its own place now.

llvm-svn: 77491
2009-07-29 18:50:06 +00:00
Fariborz Jahanian
bb67b827d9 Patch to provide cast of objects in member access
excpression, if needed, and remove some ir-gen code
now unnencessary.

llvm-svn: 77490
2009-07-29 18:40:24 +00:00
Fariborz Jahanian
72b1f24bd2 Use the existing API for base offset. Use suitable llvm type
for offset ir-gen.

llvm-svn: 77458
2009-07-29 15:54:56 +00:00
Fariborz Jahanian
82e2874270 Code refactoring to define getCXXRecordDeclForPointerType
and use it in several places.

llvm-svn: 77411
2009-07-29 00:44:13 +00:00
Fariborz Jahanian
f17071580f ir-gen derived-to-base conversion in implicit casts.
llvm-svn: 77374
2009-07-28 22:00:58 +00:00
Owen Anderson
3cc120a51e Update for LLVM API change.
llvm-svn: 77368
2009-07-28 21:22:35 +00:00
Anders Carlsson
019f414261 Remove the old RecordOrganizer.
llvm-svn: 77365
2009-07-28 21:03:34 +00:00
Fariborz Jahanian
a399dfae19 More cleanup of data member access and then some.
llvm-svn: 77351
2009-07-28 18:54:57 +00:00
Owen Anderson
47034e1733 Update for LLVM API change.
llvm-svn: 77349
2009-07-28 18:33:04 +00:00
Chris Lattner
1d0f16f22a add some fixme's
llvm-svn: 77343
2009-07-28 18:25:06 +00:00
Fariborz Jahanian
b77659f4ae Some code cleanup.
llvm-svn: 77339
2009-07-28 18:09:28 +00:00
Anders Carlsson
d5d6413aa5 More CGRecordLayoutBuilder cleanup.
llvm-svn: 77335
2009-07-28 17:56:36 +00:00
Fariborz Jahanian
5142fbd02e More work toward data member access ir-gen.
llvm-svn: 77332
2009-07-28 17:38:28 +00:00
John McCall
caa1945306 Allow functions to be marked "implicit return zero" and so mark main().
Codegen by initializing the return value with its LLVM type's null value.

llvm-svn: 77288
2009-07-28 01:00:58 +00:00
Fariborz Jahanian
e309b48a22 Patch for objc's zero-const exception to not assume
that @catch(...) cathces all exceptions (c++ objects
are not cought by that).

llvm-svn: 77270
2009-07-27 23:12:41 +00:00
Owen Anderson
0e0189d64d Update for LLVM API change.
llvm-svn: 77267
2009-07-27 22:29:56 +00:00
Owen Anderson
e05f2ed478 Update for LLVM API change.
llvm-svn: 77249
2009-07-27 21:00:51 +00:00
Fariborz Jahanian
7b2b1ec6b1 Some minor changes toward support of data
member access in the presense of non-virtual bases.

llvm-svn: 77246
2009-07-27 20:57:45 +00:00
Devang Patel
6a3b3fe98a Use DICompositeType->replaceAllUsesWith()
llvm-svn: 77228
2009-07-27 18:42:03 +00:00
Anders Carlsson
cabdeb4932 Use the CGRecordLayoutBuilder even if there are no fields, because in C++ an empty class will have a padding byte.
llvm-svn: 77205
2009-07-27 17:10:54 +00:00
Anders Carlsson
72fb384a65 Enable the new struct type builder now that the constant struct builder works. (The old code will still be there until we know that everything works well.
llvm-svn: 77190
2009-07-27 15:31:55 +00:00
Anders Carlsson
b97a3ec4e7 Fix a tail padding bug in the record layout builder code. The bug was found by an existing test.
llvm-svn: 77189
2009-07-27 14:55:54 +00:00
Anders Carlsson
b7130ed888 Enable the new constant struct builder by default. The old code is still in place but will be removed shortly. The new struct builder works on big endian systems.
llvm-svn: 77185
2009-07-27 05:54:15 +00:00
Anders Carlsson
bff6b49cd0 More work on the constant struct builder, fix a couple of thinkos and add support for inserting part of a bitfield in the previous byte.
llvm-svn: 77180
2009-07-27 02:56:37 +00:00
Anders Carlsson
ba4c6d1c91 More work on bitfield support in the new constant struct builder.
llvm-svn: 77177
2009-07-27 01:23:51 +00:00
Daniel Dunbar
e59313a298 Switch to getName()
llvm-svn: 77151
2009-07-26 09:28:40 +00:00
Daniel Dunbar
600dfac30a Switch to using llvm::Value::getName()
llvm-svn: 77147
2009-07-26 08:32:30 +00:00
Fariborz Jahanian
dedf1e4b1a ir-gen for non-virtual base class initialization
in constructors.

llvm-svn: 77087
2009-07-25 21:12:28 +00:00
Anders Carlsson
3b484b928d More work on the constant struct builder. We can now convert the struct to a packed struct when necessary.
llvm-svn: 77038
2009-07-25 01:40:29 +00:00
Anders Carlsson
87a9a34e5b More work on the constant struct builder. We now try to layout all constant structs but throw away the result.
llvm-svn: 77021
2009-07-25 00:24:56 +00:00
Owen Anderson
b7a2fe6f81 Update for LLVM API change.
llvm-svn: 77012
2009-07-24 23:12:58 +00:00
Anders Carlsson
5e66fb5d16 Fix a release build warning.
llvm-svn: 76985
2009-07-24 18:20:38 +00:00
Fariborz Jahanian
2a1b5af130 More work toward initialization of objects
in constructors.

llvm-svn: 76980
2009-07-24 17:57:02 +00:00
Anders Carlsson
e2c6baf629 Don't use getLLVMFieldNo for bitfields when constructing the ivar layout maps for GC.
llvm-svn: 76978
2009-07-24 17:23:54 +00:00
Anders Carlsson
e1d5ca583f Check in a half finished new constant struct builder (Obviously not used yet).
llvm-svn: 76969
2009-07-24 15:20:52 +00:00
Daniel Dunbar
c46a079957 Fix declaration of obc_enumerationMutation function, for GNU runtime.
llvm-svn: 76959
2009-07-24 07:40:24 +00:00
Anders Carlsson
6e853bf2b7 Get rid of the size parameter to AppendField. No functionality change.
llvm-svn: 76931
2009-07-24 02:45:50 +00:00
Daniel Dunbar
91ade14197 Output UTF-16 string literals independent of host byte order.
- Steve, can you take a look at this? It seems like this code should live
   elsewhere, and there is a FIXME about having Sema validates the UTF-8 to
   UTF-16 conversion.

llvm-svn: 76915
2009-07-23 23:41:22 +00:00
Daniel Dunbar
64509b2765 Factor out map lookup for CFString constants.
llvm-svn: 76908
2009-07-23 22:52:48 +00:00
Anders Carlsson
085395426c Don't just store the field/bit field info one field, do it for all fields in the union.
llvm-svn: 76907
2009-07-23 22:52:34 +00:00
Anders Carlsson
e2accf4404 Fix another thinko.
llvm-svn: 76903
2009-07-23 21:52:03 +00:00
Anders Carlsson
516e5e7835 Correct a thinko in bitfield layout code. Fixes PR4611.
llvm-svn: 76898
2009-07-23 21:16:33 +00:00
Daniel Dunbar
2a5b83c7e6 Simplify, NFC.
llvm-svn: 76897
2009-07-23 20:38:28 +00:00
Daniel Dunbar
635d481de0 Simplify.
llvm-svn: 76885
2009-07-23 17:33:49 +00:00
Anders Carlsson
d78fc89fcb We don't need to keep track of the packed alignment, just whether the struct is packed or not. Fixes PR4610.
llvm-svn: 76884
2009-07-23 17:24:40 +00:00