summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove debugging printf.Nick Lewycky2010-11-091-3/+0
| | | | | | Fix linux build. llvm-svn: 118497
* Introduce the concept of a non-virtual base type to CGRecordLayoutBuilder as ↵Anders Carlsson2010-11-091-9/+109
| | | | | | a first step towards fixing PR6995. llvm-svn: 118491
* Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵Anders Carlsson2010-10-311-1/+1
| | | | | | getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881
* IRgen: Move CGBitFieldInfo strategy computation helpers to static memberDaniel Dunbar2010-09-021-11/+23
| | | | | | functions. llvm-svn: 112913
* Go back to asking CodeGenTypes whether a type is zero-initializable.John McCall2010-08-221-26/+21
| | | | | | | | | Make CGT defer to the ABI on all member pointer types. This requires giving CGT a handle to the ABI. It's way easier to make that work if we avoid lazily creating the ABI. Make it so. llvm-svn: 111786
* AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.Daniel Dunbar2010-05-271-2/+3
| | | | llvm-svn: 104795
* Correctly initialize bases with member pointers. This should fix PR6441 but ↵Anders Carlsson2010-05-181-7/+19
| | | | | | that test case is a bit weird and I'd like to investigate further before closing that bug. llvm-svn: 104025
* Keep track of the LLVM field numbers for non-virtual bases.Anders Carlsson2010-05-181-4/+16
| | | | llvm-svn: 104013
* Start laying out bases as individual fields. We still use ugly i8 arrays but ↵Anders Carlsson2010-05-181-14/+61
| | | | | | this is a step in the right direction. llvm-svn: 104012
* Use a more appropriate LLVM type for the vtable pointer.Anders Carlsson2010-05-051-3/+5
| | | | llvm-svn: 103078
* IRgen: Fix another case where we generated an invalid access component when weDaniel Dunbar2010-04-221-13/+12
| | | | | | | immediately narrowed the access size. Fix this (and previous case) by just choosing a better access size up-front. llvm-svn: 102068
* IRgen: Fix case where we might generate an access component with width == 0, ifDaniel Dunbar2010-04-221-0/+10
| | | | | | | we have to narrow the access side immediately (can happen with packed, -fno-bitfield-type-align). llvm-svn: 102067
* IRgen: Set alignment correctly on bit-field accesses.Daniel Dunbar2010-04-221-4/+4
| | | | llvm-svn: 102046
* IRgen: Rewrite bit-field access policy to not access data beyond the bounds ↵Daniel Dunbar2010-04-221-39/+83
| | | | | | | | | | | | of the structure, which we also now verify as part of the post-layout consistency checks. - This fixes some pedantic bugs with packed structures, as well as major problems with -fno-bitfield-type-align. - Fixes PR5591, PR5567, and all known -fno-bitfield-type-align issues. - Review appreciated. llvm-svn: 102045
* IRgen: Fix CGRecordLayout::print to print the bit-field infos in a ↵Daniel Dunbar2010-04-221-1/+14
| | | | | | consistent order. llvm-svn: 102044
* IRgen: Add checking that the LLVM and AST record layout offsets agree (forDaniel Dunbar2010-04-211-1/+20
| | | | | | non-bit-fields). llvm-svn: 102014
* IRgen: Always use i8 arrays to access union bit-fields. This is ugly, butDaniel Dunbar2010-04-201-15/+6
| | | | | | | matches how we currently handle structs, and this correctly handles -fno-bitfield-type-align. llvm-svn: 101918
* AST: Dump ASTRecordLayout objects when they are created with ↵Daniel Dunbar2010-04-191-1/+1
| | | | | | -fdump-record-layouts. llvm-svn: 101815
* IRgen: Kill unused function and move the type match assert to after record ↵Daniel Dunbar2010-04-191-13/+8
| | | | | | dumping. llvm-svn: 101814
* Simplify wide bit-field layout in CGRecordLayoutBuilder, and also fix a bug ↵Anders Carlsson2010-04-171-15/+10
| | | | | | where assigning to a bit-field member would overwrite other parts of the struct. llvm-svn: 101681
* Unnamed bit-fields in a union should be laid out with a type that doesn't ↵Anders Carlsson2010-04-171-1/+17
| | | | | | affect alignment. llvm-svn: 101673
* Factor union field layout code out into a separate function. No ↵Anders Carlsson2010-04-171-18/+31
| | | | | | functionality change. llvm-svn: 101671
* Vtable -> VTable renames across the board.Anders Carlsson2010-04-171-1/+1
| | | | llvm-svn: 101666
* Make CGRecordLayoutBuilder deal with wide bit-fields. Will land tests ↵Anders Carlsson2010-04-161-1/+20
| | | | | | shortly (Daniel, please review). llvm-svn: 101472
* IRgen: Change CGBitFieldInfo to take the AccessInfo as constructor ↵Daniel Dunbar2010-04-151-5/+6
| | | | | | | | arguments, it is now an immutable object. Also, add some checking of various invariants that should hold on the CGBitFieldInfo access. llvm-svn: 101345
* IRgen: Eliminate now unused fields from CGBitFieldInfo.Daniel Dunbar2010-04-151-7/+4
| | | | llvm-svn: 101344
* IRgen: Enhance CGBitFieldInfo with enough information to fully describe the ↵Daniel Dunbar2010-04-131-5/+65
| | | | | | | | | | "policy" with which a bit-field should be accessed. - For now, these policies are computed to match the current IRgen strategy, although the new information isn't being used yet (except in -fdump-record-layouts). - Design comments appreciated. llvm-svn: 101178
* IRgen: Factor out ComputeBitFieldInfo.Daniel Dunbar2010-04-121-18/+21
| | | | llvm-svn: 101066
* IRgen: Add CGRecordLayout::dump, and dump (irgen) record layouts as part of ↵Daniel Dunbar2010-04-121-1/+38
| | | | | | -fdump-record-layouts. llvm-svn: 101051
* IRgen: Move the bit-field access type into CGBitFieldInfo, and change ↵Daniel Dunbar2010-04-081-4/+4
| | | | | | bit-field LValues to just store the base address of object containing the bit-field. llvm-svn: 100745
* IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.Daniel Dunbar2010-04-061-2/+5
| | | | llvm-svn: 100513
* Simplify.Daniel Dunbar2010-04-061-28/+11
| | | | llvm-svn: 100512
* IRgen: Lift BitFieldInfo to CGBitFieldInfo at namespace level.Daniel Dunbar2010-04-051-1/+1
| | | | llvm-svn: 100433
* IRGen: Move the auxiliary data structures tracking AST -> LLVM mappings out ↵Daniel Dunbar2010-03-311-3/+7
| | | | | | | | of CodeGenTypes, to per-record CGRecordLayout structures. - I did a cursory check that this was perf neutral, FWIW. llvm-svn: 99978
* CGRecordLayoutBuilder: Switch unions to use same mechanism for tracking ↵Daniel Dunbar2010-03-311-3/+4
| | | | | | | | field and bit-field info as structs. - Anders, please check. llvm-svn: 99977
* IRGen: Hide CGRecordLayoutBuilder class, because I can.Daniel Dunbar2010-03-311-28/+133
| | | | llvm-svn: 99967
* IRgen: Move CGRecordLayout to its own happy little file.Daniel Dunbar2010-03-301-1/+1
| | | | llvm-svn: 99945
* Improve handling of emitting 'null' pointers to data members.Anders Carlsson2010-02-021-10/+24
| | | | llvm-svn: 95066
* Fix an incorrect union layout assert. Fixes PR6164.Anders Carlsson2010-01-281-1/+6
| | | | llvm-svn: 94754
* Baby steps towards fixing PR5589. If a class needs a vtable pointer, add one.Anders Carlsson2009-12-161-0/+16
| | | | llvm-svn: 91545
* No need to add tail padding if the resulting LLVM struct type will have the ↵Anders Carlsson2009-12-081-2/+8
| | | | | | same size as the final record size. llvm-svn: 90820
* Have ASTRecordLayout keep track of the key function, in preparation of ↵Anders Carlsson2009-11-301-29/+1
| | | | | | fixing a synthetic ctor/dtor bug. llvm-svn: 90168
* Fixup key function calculations.Mike Stump2009-11-201-6/+2
| | | | llvm-svn: 89412
* This doesn't work yet.Mike Stump2009-11-191-0/+5
| | | | llvm-svn: 89307
* Prevent a code gen. crash on empty unions - pr5408.Fariborz Jahanian2009-11-061-1/+5
| | | | llvm-svn: 86287
* Store the key function of a record decl inside CGRecordLayout.Anders Carlsson2009-10-121-1/+28
| | | | llvm-svn: 83900
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-091-61/+61
| | | | llvm-svn: 81346
* If the alignment of the chosen field in a union is greater than the ↵Anders Carlsson2009-09-031-1/+8
| | | | | | alignment of the union, we need to use a packed LLVM struct. Fixes <rdar://problem/7184250>. llvm-svn: 80964
* Packed unions should be packed. Fixes an assert Daniel reported.Anders Carlsson2009-09-021-2/+1
| | | | llvm-svn: 80808
* More work towards zero-initializing structs that contain member pointers in ↵Anders Carlsson2009-08-231-1/+20
| | | | | | constant expressions. llvm-svn: 79805
OpenPOWER on IntegriCloud