History log of /external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 29-May-2014 Stephen Hines <srhines@google.com> Update Clang for 3.5 rebase (r209713).

Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2f2fb5a304d96443fdcab70ba909346b96757d8b 15-Nov-2013 Hans Wennborg <hans@hanshq.net> Fix typo in CGRecordLayoutBuilder.cpp: s/Field/Fields/ in comment

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194863 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
58656de61dd044410ad2e9f36b20dfd988400120 30-Oct-2013 Warren Hunt <whunt@google.com> Minor efficiency refactor related to 193661. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
1f600171fdd68568507a77291637dd5173dd0885 30-Oct-2013 Warren Hunt <whunt@google.com> Fixing code gen to handle microsoft layouts for which size % alignment
!= 0



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
b2969b1e50580344891a98f5b241f8351fe371cf 11-Oct-2013 Warren Hunt <whunt@google.com> Adds Microsoft compatiable C++ record layout code to clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c250192494e0fa63be50269d2c1eb7786f8ab7a0 13-Jul-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Changes so that a few tests do not fail when running under guarded malloc.

Guarded malloc emits some messages at the beginning in stderr when enabled.
These messages caused a few tests to fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
cd06f26835033e879a9278941f4f6e6a4086976d 26-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Rewrite record layout for ms_struct structs.

The old implementation of ms_struct in RecordLayoutBuilder was a
complete mess: it depended on complicated conditionals which didn't
really reflect the underlying logic, and placed a burden on users of
the resulting RecordLayout. This commit rips out almost all of the
old code, and replaces it with simple checks in
RecordLayoutBuilder::LayoutBitField.

This commit also fixes <rdar://problem/14252115>, a bug where class
inheritance would cause us to lay out bitfields incorrectly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
64aa4b3ec7e62288e2e66c1935487ece995ca94b 17-Apr-2013 John McCall <rjmccall@apple.com> Standardize accesses to the TargetInfo in IR-gen.

Patch by Stephen Lin!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
b8b2c9da87e7d70a1679db026f40548b3192b705 25-Jan-2013 John McCall <rjmccall@apple.com> First pass at abstracting out a class for the target C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
ed6355d56cbeb1cd1a77cc46e0a519af25523ccb 16-Jan-2013 David Greene <greened@obbligato.org> Fix signed/unsigned Compare

Do some casting to avoid a signed/unsigned compare.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172571 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
3b844ba7d5be205a9b4f5f0b0d1b7978977f4b8c 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Rewrite #includes for llvm/Foo.h to llvm/IR/Foo.h as appropriate to
reflect the migration in r171366.

Re-sort the #include lines to reflect the new paths.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
6bd120387a0d36bb5a748d4100b3eaa399eb53c5 18-Dec-2012 Eli Bendersky <eliben@google.com> Fix a compilation warning with gcc 4.6


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
b50d7a35c2f55be382d462a02fd4e21d6b582162 09-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Cleanup and fix an assert that was mis-firing.

Note that there is no test suite update. This was found by a couple of
tests failing when the test suite was run on a powerpc64 host (thanks
Roman!). The tests don't specify a triple, which might seem surprising
for a codegen test. But in fact, these tests don't even inspect their
output. Not at all. I could add a bunch of triples to these tests so
that we'd get the test coverage for normal builds, but really someone
needs to go through and add actual *tests* to these tests. =[ The ones
in question are:

test/CodeGen/bitfield-init.c
test/CodeGen/union.c

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
ef8d516e7e015a905ca72ce99590803ca7c7e8f3 09-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Fix the bitfield record layout in codegen for big endian targets.

This was an egregious bug due to the several iterations of refactorings
that took place. Size no longer meant what it original did by the time
I finished, but this line of code never got updated. Unfortunately we
had essentially zero tests for this in the regression test suite. =[

I've added a PPC64 run over the bitfield test case I've been primarily
using. I'm still looking at adding more tests and making sure this is
the *correct* bitfield access code on PPC64 linux, but it looks pretty
close to me, and it is *worlds* better than before this patch as it no
longer asserts! =] More commits to follow with at least additional tests
and maybe more fixes.

Sorry for the long breakage due to this....

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
72d2dab6058467036df73a5f668036a519043e5b 06-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Rework the bitfield access IR generation to address PR13619 and
generally support the C++11 memory model requirements for bitfield
accesses by relying more heavily on LLVM's memory model.

The primary change this introduces is to move from a manually aligned
and strided access pattern across the bits of the bitfield to a much
simpler lump access of all bits in the bitfield followed by math to
extract the bits relevant for the particular field.

This simplifies the code significantly, but relies on LLVM to
intelligently lowering these integers.

I have tested LLVM's lowering both synthetically and in benchmarks. The
lowering appears to be functional, and there are no really significant
performance regressions. Different code patterns accessing bitfields
will vary in how this impacts them. The only real regressions I'm seeing
are a few patterns where the LLVM code generation for loads that feed
directly into a mask operation don't take advantage of the x86 ability
to do a smaller load and a cheap zero-extension. This doesn't regress
any benchmark in the nightly test suite on my box past the noise
threshold, but my box is quite noisy. I'll be watching the LNT numbers,
and will look into further improvements to the LLVM lowering as needed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169489 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
55fc873017f10f6f566b182b70f6fc22aefa3464 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort all of Clang's files under 'lib', and fix up the broken headers
uncovered.

This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.

I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5f608aedb6c5d32d2f7c51f9354a75b21f1eeaee 13-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Make -mms-bitfields behave consistently.

Patch by Jeremiah Zanin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165849 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
25a6a84cf5067b32c271e3ba078676dee838798d 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
f4bcfa1b1850711d5eb092f2b0639331ef9f09f1 27-Jun-2012 Eli Friedman <eli.friedman@gmail.com> Propagate lvalue alignment into bitfields. Per report on cfe-dev.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
581deb3da481053c4993c7600f97acf7768caac5 06-Jun-2012 David Blaikie <dblaikie@gmail.com> Revert Decl's iterators back to pointer value_type rather than reference value_type

In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.

This rolls back r155808 and r155869.

Review by Doug Gregor incorporating feedback from Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
441c6239c6df8c759bacf6510efbfd434b647066 01-May-2012 John McCall <rjmccall@apple.com> Add support for laying out vtordisps according to our current
working knowledge of the Microsoft ABI. Based on a patch by
Dmitry Sokolov.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
262bc18e32500558af7cb0afa205b34bd37bafed 30-Apr-2012 David Blaikie <dblaikie@gmail.com> Remove the ref/value inconsistency in filter_decl_iterator.

filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.

This change errs on the side of value, making op-> return T* and op* return
T&.

(reviewed by Richard Smith)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c8f11e9b4b627a85aa83f74474327254d958cf8d 27-Apr-2012 Eli Friedman <eli.friedman@gmail.com> Add a missing check in CodeGen of packed classes with vtables. <rdar://problem/11324125>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
4e4d08403ca5cfd4d558fa2936215d3a4e5a528d 11-Mar-2012 David Blaikie <dblaikie@gmail.com> Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).

The member variable is always "LangOpts" and the member function is always "getLangOpts".

Reviewed by Chris Lattner

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
77889c43b73a99aae82e7ede01baa08a60b6976b 04-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about a set-but-not-used variable in release builds.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
89e6e85f1a6c4972ece0b68950673735daec970a 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> A base subobject type doesn't make sense for unions; don't try to compute it. Based on patch by Yin Ma. Fixes PR11751.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
fa2b3dd31c2fa32f10156e3cbbc8d0cfa2879d03 13-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make CGRecordLayoutBuilder correctly switch over to a packed class when a class has a base whose alignment will break the class layout. <rdar://problem/10551376>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146443 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
26e80cdfe8933a7f804e1d05b379d5ad50119db5 07-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we correctly zero-initialize unions containing a pointer to data member as the first field. PR11487.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9da235244c2de2bcca654b518c66133c30ebde53 08-Nov-2011 John McCall <rjmccall@apple.com> Fix the layout of vb-tables and vf-tables in the MS C++ ABI.
Based on work by Dmitry Sokolov!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144072 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
97c0aefe8c0523417ffe8a500a220286e11e7a46 18-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Rewrite parts of MS ABI C++ layout. Based on work by r4start; I ended up doing this while I was trying to review his patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142325 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a6b8b2c09610b8bc4330e948ece8b940c2386406 10-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation refactoring:
- Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
behaviour.
- Factor out evaluation of bitfield bit widths.
- Fix a few places which would evaluate an expression twice: once to determine
whether it is a constant expression, then again to get the value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
bcfd1f55bfbb3e5944cd5e03d07b343e280838c4 02-Sep-2011 Douglas Gregor <dgregor@apple.com> Extend the ASTContext constructor to delay the initialization of
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c1c20114a401e503c07d68c47e0728bb063f35c8 12-Aug-2011 Chris Lattner <sabre@nondot.org> switch clang to use the new-new way of creating llvm::StructType's.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5f9e272e632e951b1efe824cd16acb4d96077930 23-Jul-2011 Chris Lattner <sabre@nondot.org> remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2acc6e3feda5e4f7d9009bdcf8b1cd777fecfe2d 18-Jul-2011 Chris Lattner <sabre@nondot.org> de-constify llvm::Type, patch by David Blaikie!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9cbe4f0ba01ec304e1e3d071c071f7bca33631c0 09-Jul-2011 Chris Lattner <sabre@nondot.org> clang side to match the LLVM IR type system rewrite patch.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
e26bdb91b7e3912ffe895b78a446db94471a59dd 21-Jun-2011 Daniel Dunbar <daniel@zuster.org> IRgen: Add a -fuse-register-sized-bitfield-access option, for testing.
- Changes bit-field access policy to try to use (aligned) register sized accesses.

The idea here is that by using larger accesses we expose more coalescing
potential to the backend when we have situations like adjacent bit-fields in the
same structure (which is common), and that the backend should be smart enough to
narrow the accesses down when no coalescing is done or when it is shown not to
be profitable.

--
$ clang -m32 -O3 -S -o - t.c
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb (%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, (%eax)
movb 1(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 1(%eax)
movb 2(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 2(%eax)
movb 3(%eax), %cl
andb $-128, %cl
orb $1, %cl
movb %cl, 3(%eax)
popl %ebp
ret

$ clang -m32 -O3 -S -o - t.c -Xclang -fuse-register-sized-bitfield-access
_f0: ## @f0
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl $-2139062144, %ecx ## imm = 0xFFFFFFFF80808080
andl (%eax), %ecx
orl $16843009, %ecx ## imm = 0x1010101
movl %ecx, (%eax)
popl %ebp
ret
--

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133532 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
575a1c9dc8dc5b4977194993e289f9eda7295c39 20-May-2011 Douglas Gregor <dgregor@apple.com> Introduce Type::isSignedIntegerOrEnumerationType() and
Type::isUnsignedIntegerOrEnumerationType(), which are like
Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also
consider the underlying type of a C++0x scoped enumeration type.

Audited all callers to the existing functions, switching those that
need to also handle scoped enumeration types (e.g., those that deal
with constant values) over to the new functions. Fixes PR9923 /
<rdar://problem/9447851>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
855a8e79f42e670b405b31efd3963f4d89732aff 03-May-2011 Fariborz Jahanian <fjahanian@apple.com> Finish off rules for z-length bitfields in ms_struct
structs. // rdar://8823265


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
340fa242130c2d8d74c83edca0952e771aebe0e6 02-May-2011 Fariborz Jahanian <fjahanian@apple.com> More rule enforcement of zero bitfields for ms_struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
14d56ef43ff4921c6749f7340212fbb743fdbb9b 27-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Some refactoring of my ms_struct patch.
// rdar://8823265 related.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
62055b0618fafb4747e783ba3fedd7bc7d57d27d 27-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> With ms_struct attribut, Zero-length bitfields following
non-bitfield members are ignore. // rdar://8823265 wip


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
3256de709a69572be90e9c8855fafb58c4d93d10 24-Apr-2011 Ken Dyck <kd@kendyck.com> Simplify AppendTailPadding() by converting its parameter to CharUnits. No
change in functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
737978d336ea8bbb27cc7a3c9cb5eeb2b7dea8a5 24-Apr-2011 Ken Dyck <kd@kendyck.com> Eliminate literal 8s from LayoutUnionField by converting NumBytesToAppend to
CharUnits. No change in functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
edda6e432789b7a668c86573fd5881342b9f6e27 24-Apr-2011 Ken Dyck <kd@kendyck.com> Eliminate literal 8s from LayoutBitField(), converting variables to
CharUnits or replacing the 8s with char align. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130106 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
b9e6b2c215d0a7930ad160b054bc86353da4a517 24-Apr-2011 Ken Dyck <kd@kendyck.com> Convert AccessInfo::AccessAlignment to CharUnits. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
28ebde58dd94b5ed2a6d149251202ab2c602a4a6 24-Apr-2011 Ken Dyck <kd@kendyck.com> Convert CGBitFieldInfo::FieldByteOffset to CharUnits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
eb9d81dff99d4996f41c93ce71b08aaf753cbae8 17-Apr-2011 Anders Carlsson <andersca@mac.com> When laying out bases in, always try the "base subobject" LLVM type. If it
turns out that a field or base needs to be laid out in the tail padding of
the base, CGRecordLayoutBuilder::ResizeLastBaseFieldIfNecessary will convert
it to an array of i8.

I've audited the new test results to make sure that they are still valid. I've
also verified that we pass a self-host with this change.

This (finally) fixes PR5589!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2786a81415c43cf3110d197b20987c352edbd0fe 17-Apr-2011 Anders Carlsson <andersca@mac.com> Use a SmallVector for field types in CGRecordLayoutBuilder now that llvm::StructType::get takes an ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c3e494047b921529ce01c5b77c0a7f81eec8a300 22-Mar-2011 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
92ee7ca6f42d2bd735f9bfc120c00838c4e469c0 26-Feb-2011 John McCall <rjmccall@apple.com> A much-delayed response to Ken Dyck's review: make this somewhat more
char-width agnostic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
d8df5b65fc76c2f59148e1551f56a8ee26c9607b 17-Feb-2011 Chris Lattner <sabre@nondot.org> improve support for big endian targets, fixing PR8171, patch
by Heikki Kultala!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125784 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
fd577d6b71d82d16b3c67f307bec948b7a0a84b2 15-Feb-2011 John McCall <rjmccall@apple.com> Refactor CGRecordLayoutBuilder to use CharUnits more consistently.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125605 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9b7da1c46d6d2849f9cb51328d7fcddf2c417672 15-Feb-2011 John McCall <rjmccall@apple.com> Perform zero-initialization of virtual base classes when emitting
a zero constant for a complete class. rdar://problem/8424975

To make this happen, track the field indexes for virtual bases
in the complete object. I'm curious whether we might be better
off making CGRecordLayoutBuilder *much* more reliant on
ASTRecordLayout; we're currently duplicating an awful lot of the ABI
layout logic.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
dac54c124e302d6f028ea5723c425b7f66fc7c71 15-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Alignment to CharUnits from bit units. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
dd76a9ab9ea675671200f94b18ce95766841952b 11-Feb-2011 Ken Dyck <kd@kendyck.com> Add a helper function, ASTContext::toBits(), that converts sizes in
CharUnits to sizes in bits, and use it to tidy up the places where the
conversion was done explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125332 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9186ff310cf0ad92ec7f39b2c9dcb7e848195052 10-Feb-2011 Ken Dyck <kd@kendyck.com> Drop the 'InBits' part from the name of RecordSizeInBits as the value is in
character units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
7198e94d55213222044515d5a83713911d0c6dbb 10-Feb-2011 Ken Dyck <kd@kendyck.com> Eliminate some signed-to-unsigned comparision warnings introduced in
r125156.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125280 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5f022d82696c84e4d127c558871d68ac6273274e 09-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Size to CharUnits from bits. No changes to
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
68cf1a5a01ba43ed56a8624632fd65e0804430ac 08-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualAlign to CharUnits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5c3633fa57f27b0909ab5767715c4e66b8920165 01-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualSize from bit units to CharUnits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
db2b42fb4d43be5af14ba33d49bbd163f01646ec 10-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix another obscure corner layout case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
860453c4b4768e99d72f5833771c508e6ef00cc6 05-Dec-2010 Anders Carlsson <andersca@mac.com> Add a LayoutBase member function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
57d2d236d24de0edb7e51b86d88c0eb970330650 05-Dec-2010 Anders Carlsson <andersca@mac.com> Replace calls to AppendBytes with calls to AppendPadding when the bytes appended are padding.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
d0de0ce304b3fcdda0fe081da2974420ee6f14e7 01-Dec-2010 John McCall <rjmccall@apple.com> CGRecordLayoutBuilder does not need to be exported from this module.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120489 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
fc86d55b6b20c47f67a61afa4b3903eb0d31f9b8 29-Nov-2010 Anders Carlsson <andersca@mac.com> Don't store the maximum alignment, we can trivially compute it.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
1d7dc2240717eb34672035b13ceb17710ab481c1 28-Nov-2010 Anders Carlsson <andersca@mac.com> More work on laying out virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8f2c6899dd14023555808dbdcbe7e371c3fb2cc2 25-Nov-2010 Anders Carlsson <andersca@mac.com> Begin work on actually laying out virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c9e814ba193f38a7b08268612248f63beb279bb3 25-Nov-2010 Anders Carlsson <andersca@mac.com> Rename RecordLayout::getPrimaryBaseWasVirtual to isPrimaryBaseVirtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
46170f9c7d561d0f94af34a4b5da909d2584370a 24-Nov-2010 Anders Carlsson <andersca@mac.com> Add CXXRecordDecl::getIndirectPrimaryBases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120129 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
3379e9bd71c0e0051bd97e90d4f2ec964078091d 24-Nov-2010 Anders Carlsson <andersca@mac.com> Simplify code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120109 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
ba2c2eec87d614b06e194b289627bbfe0642e4ce 24-Nov-2010 Anders Carlsson <andersca@mac.com> CGRecordLayout types are always struct types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120106 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a03613d6e3f38e0ea8f5ebf0d7c9039b9fe35a8d 22-Nov-2010 Anders Carlsson <andersca@mac.com> Remove FIXME; we don't ever want to lay out empty bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119957 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9a5a3f2f3bc7048160b50dadeb7fa56e5e9d8385 22-Nov-2010 Anders Carlsson <andersca@mac.com> Rename BaseLLVMType to NonVirtualBaseLLVMType.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
f4a15b0df4c8e8b012aa33f5f2f182871efb9dd0 22-Nov-2010 Anders Carlsson <andersca@mac.com> Add getCGRecordLayout helper function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119955 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
cb0511cc291a2f1b6ba281b818f3d07184e198b7 09-Nov-2010 Nick Lewycky <nicholas@mxc.ca> Remove debugging printf.
Fix linux build.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118497 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
3d155e683a74d3783362ef1865be91544eb8a9fc 09-Nov-2010 Anders Carlsson <andersca@mac.com> Introduce the concept of a non-virtual base type to CGRecordLayoutBuilder as a first step towards fixing PR6995.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a14f5979572aa25c03d24750ee4724d2031d4ede 01-Nov-2010 Anders Carlsson <andersca@mac.com> Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
e7a80bd66a80ce509de9b50f32cdd402914edd2e 03-Sep-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Move CGBitFieldInfo strategy computation helpers to static member
functions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
f16aa103d3afd42fbca2ab346f191bf745cec092 22-Aug-2010 John McCall <rjmccall@apple.com> Go back to asking CodeGenTypes whether a type is zero-initializable.
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.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8a2c92cab213bd7e28ff669577e815cd70bafbe3 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a83fb4bf8119b980ccf7de0795dff250a799ea58 18-May-2010 Anders Carlsson <andersca@mac.com> Correctly initialize bases with member pointers. This should fix PR6441 but that test case is a bit weird and I'd like to investigate further before closing that bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104025 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c6772ce9c80ff524c7c522b5f0b37de58786bd84 18-May-2010 Anders Carlsson <andersca@mac.com> Keep track of the LLVM field numbers for non-virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
15ddfdc5d8929556c07ea7341006b31c71544325 18-May-2010 Anders Carlsson <andersca@mac.com> Start laying out bases as individual fields. We still use ugly i8 arrays but this is a step in the right direction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
68e3013ade8a219625b636bb8c1dcec2ba6fb685 05-May-2010 Anders Carlsson <andersca@mac.com> Use a more appropriate LLVM type for the vtable pointer.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
52968a1c765e43000f904ecb27a6353b0185bcd6 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Fix another case where we generated an invalid access component when we
immediately narrowed the access size. Fix this (and previous case) by just
choosing a better access size up-front.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
4651efb5ba5710c91b58c8b86872b264dd71f464 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Fix case where we might generate an access component with width == 0, if
we have to narrow the access side immediately (can happen with packed,
-fno-bitfield-type-align).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102067 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
89da874f8ecfebabdac2c6e9b7930ebe179ccf81 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Set alignment correctly on bit-field accesses.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102046 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
e1467a4ceeeb74cdc54830e03df8d58893e38892 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Rewrite bit-field access policy to not access data beyond the bounds 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
ad759530ff48385255c25e71d7e05632361e0c11 22-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Fix CGRecordLayout::print to print the bit-field infos in a consistent order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
3b2ae7ae59b11657416fc3f16e742713b4683e5e 21-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Add checking that the LLVM and AST record layout offsets agree (for
non-bit-fields).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8ab78a7d9d755975db67170cae64c05d5176c00c 20-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Always use i8 arrays to access union bit-fields. This is ugly, but
matches how we currently handle structs, and this correctly handles
-fno-bitfield-type-align.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8d8ab749f6f8bb63ea2cd2b589c0f050b67fc5cc 19-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Dump ASTRecordLayout objects when they are created with -fdump-record-layouts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2e7b7c2f267e0bf8047608aa1cd6691c0bf86792 19-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Kill unused function and move the type match assert to after record dumping.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
6ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4 18-Apr-2010 Anders Carlsson <andersca@mac.com> Simplify wide bit-field layout in CGRecordLayoutBuilder, and also fix a bug where assigning to a bit-field member would overwrite other parts of the struct.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101681 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
d62328e6a0fa933e3a5daaf68e4964031e6c5c5e 17-Apr-2010 Anders Carlsson <andersca@mac.com> Unnamed bit-fields in a union should be laid out with a type that doesn't affect alignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
86664465bac330871d4a476f68a1d6f7f6f102af 17-Apr-2010 Anders Carlsson <andersca@mac.com> Factor union field layout code out into a separate function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
046c294a43024874ff35656c6e785b64e72f1f36 17-Apr-2010 Anders Carlsson <andersca@mac.com> Vtable -> VTable renames across the board.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101666 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
1c7658fd32f26a3ea5fa1421494b2449c9eba3c9 16-Apr-2010 Anders Carlsson <andersca@mac.com> Make CGRecordLayoutBuilder deal with wide bit-fields. Will land tests shortly (Daniel, please review).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2df2569679237b4979654a8663cd61aea67ab207 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Change CGBitFieldInfo to take the AccessInfo as constructor arguments, it is now an immutable object.

Also, add some checking of various invariants that should hold on the CGBitFieldInfo access.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101345 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
7fb619500404129322af972aab66c369949a2a74 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Eliminate now unused fields from CGBitFieldInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
ab970f90ce31a53fe7e6375a37536bf0832fd922 13-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Enhance CGBitFieldInfo with enough information to fully describe the "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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
9b28daf9b6ea3808ef6b63408c24095a43d48018 12-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Factor out ComputeBitFieldInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
93c62967d4ac7620a8ed2c5f875daab9adb416f0 12-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Add CGRecordLayout::dump, and dump (irgen) record layouts as part of -fdump-record-layouts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
7f2896406c8f14bf123578610043a919ba1a1c8a 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Move the bit-field access type into CGBitFieldInfo, and change bit-field LValues to just store the base address of object containing the bit-field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
efbf487da83883c2da81181cac6f040928aa4289 06-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Move BitFieldIsSigned bit into CGBitFieldInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c7a984af71394402cb4d149554ab5da11aebd729 06-Apr-2010 Daniel Dunbar <daniel@zuster.org> Simplify.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2eec0b2e3e931de6cefbb266a7652a0622fe95b2 05-Apr-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Lift BitFieldInfo to CGBitFieldInfo at namespace level.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
198bcb44b6271c92fd856403f34b518828100aac 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> IRGen: Move the auxiliary data structures tracking AST -> LLVM mappings out of CodeGenTypes, to per-record CGRecordLayout structures.
- I did a cursory check that this was perf neutral, FWIW.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
490fc902710eca4e4a07b2ecaa223e70670331d6 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> CGRecordLayoutBuilder: Switch unions to use same mechanism for tracking field and bit-field info as structs.
- Anders, please check.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99977 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
270e203b50ed8791e61afd357596bcf050cf2bfd 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> IRGen: Hide CGRecordLayoutBuilder class, because I can.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2924ade97ee4228fcf3518d89cd4bd1653236b48 31-Mar-2010 Daniel Dunbar <daniel@zuster.org> IRgen: Move CGRecordLayout to its own happy little file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2c12d0319a267b844cb7d569d84426cd344b90f7 02-Feb-2010 Anders Carlsson <andersca@mac.com> Improve handling of emitting 'null' pointers to data members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
21fd7d7347358994ee6d944c22a51e82d22409d9 28-Jan-2010 Anders Carlsson <andersca@mac.com> Fix an incorrect union layout assert. Fixes PR6164.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
4b3e5be334c93c3f48af2a49c0ea7cd9bae2a0e5 16-Dec-2009 Anders Carlsson <andersca@mac.com> Baby steps towards fixing PR5589. If a class needs a vtable pointer, add one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91545 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c2456824a106455bae5d738fe65d80b14a6804c4 08-Dec-2009 Anders Carlsson <andersca@mac.com> No need to add tail padding if the resulting LLVM struct type will have the same size as the final record size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
1a5e0d7f18485e4fb958f96dcddff3e4486a4069 01-Dec-2009 Anders Carlsson <andersca@mac.com> Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a84b4044b79f2cc424c6ae7ee5edb97e948ba806 20-Nov-2009 Mike Stump <mrs@apple.com> Fixup key function calculations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89412 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
88bd0094d8784b0a6a785ddeca18e5061417dcce 19-Nov-2009 Mike Stump <mrs@apple.com> This doesn't work yet.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
e504170f688b0e2113011839b933a4ec450b5182 06-Nov-2009 Fariborz Jahanian <fjahanian@apple.com> Prevent a code gen. crash on empty unions - pr5408.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86287 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5017a157c6c5462ea1d4154d7d758ee3d277b735 12-Oct-2009 Anders Carlsson <andersca@mac.com> Store the key function of a record decl inside CGRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
366200045fc30290795e037ab2cb417ddd3c9933 04-Sep-2009 Anders Carlsson <andersca@mac.com> If the alignment of the chosen field in a union is greater than the alignment of the union, we need to use a packed LLVM struct. Fixes <rdar://problem/7184250>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
d0eb3b93e89f0ab83a2305eb0ec42076f8d46142 02-Sep-2009 Anders Carlsson <andersca@mac.com> Packed unions should be packed. Fixes an assert Daniel reported.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
fc3eaa47fa2ef70ab21131005c328adda3020737 23-Aug-2009 Anders Carlsson <andersca@mac.com> More work towards zero-initializing structs that contain member pointers in constant expressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
341bdf8d565f5282779a0ffd2d2b77f3a38b735e 23-Aug-2009 Anders Carlsson <andersca@mac.com> Remove the PaddingFields member from CGRecordLayout, it wasn't used anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
0032b2781b4deb131f8c9b7968f2030bf2489cdd 13-Aug-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a5dd722bdf2f74a1a249fe6661d96a7236aee0f0 08-Aug-2009 Anders Carlsson <andersca@mac.com> Take #pragma pack into account when laying out structs. Fixes rdar://problem/7095436.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
a860e755f1f9f071b6a6a2f96128a6a258f5c331 08-Aug-2009 Anders Carlsson <andersca@mac.com> Introduce a new PragmaPack attribute, and use it for #pragma pack. The PackedAttr now only represents __attribute__((packed)).

This is necessary because #pragma pack and __attribute__((packed)) have different semantics. No functionality change yet, but this lays the groundwork for fixing a record layout bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
df31e091126da6a5c08303a78b562d00e7fd4e20 08-Aug-2009 Anders Carlsson <andersca@mac.com> Assert that the LLVM type has the same size as the RecordDecl size.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78481 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
47a434ff3d49e7906eda88e8e8242e4297725b32 06-Aug-2009 Owen Anderson <resistor@mac.com> Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
de9f2c937a4892d155cfe695657ce4cc3556836f 04-Aug-2009 Anders Carlsson <andersca@mac.com> Simplify alignment handling in the record builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8a8a629844d26c24dc0147d55a32a937b14b9381 29-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> No longer need to keep base class offsets in the offset
table as it has its own place now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c2cc1d5e29596f2ee2f32ca9c06f9119904dd161 28-Jul-2009 Anders Carlsson <andersca@mac.com> More CGRecordLayoutBuilder cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
cad86653942d4e33c2674ea40e77d7fe59990130 27-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> Some minor changes toward support of data
member access in the presense of non-virtual bases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77246 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
abdad358b53d0efd1d89ea434b7078600a656d1f 27-Jul-2009 Anders Carlsson <andersca@mac.com> 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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77190 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
c1efe36ca75b4f4f82cdec464bab5693ed0d6058 27-Jul-2009 Anders Carlsson <andersca@mac.com> Fix a tail padding bug in the record layout builder code. The bug was found by an existing test.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77189 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
4c98efdf06f94da20a640aa36f6a4f3284c26bff 24-Jul-2009 Anders Carlsson <andersca@mac.com> Check in a half finished new constant struct builder (Obviously not used yet).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
728d7cd2e25a0a1e5ff272163fc7ed17980f029a 24-Jul-2009 Anders Carlsson <andersca@mac.com> Get rid of the size parameter to AppendField. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
94ae95f17ed4155ca4718575f00eafa1bfb8c5a0 24-Jul-2009 Anders Carlsson <andersca@mac.com> Don't just store the field/bit field info one field, do it for all fields in the union.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76907 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
177d4d8700d66e80a874c3f609eede297118633d 23-Jul-2009 Anders Carlsson <andersca@mac.com> Fix another thinko.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
faaec2234f21bf175dd05c723072202cdf39cb2f 23-Jul-2009 Anders Carlsson <andersca@mac.com> Correct a thinko in bitfield layout code. Fixes PR4611.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
4b5584b38b860e8ecb20420e2fe16d5ed97a68a0 23-Jul-2009 Anders Carlsson <andersca@mac.com> We don't need to keep track of the packed alignment, just whether the struct is packed or not. Fixes PR4610.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
8330ceeebb3bfac31116b387b90ff2ce3cef85e4 23-Jul-2009 Anders Carlsson <andersca@mac.com> Move the LLVM field number for bit fields into the BitFieldInfo structure, since it's meaning is completely different than for non-bit fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
cfc6758b5f62514445eead673a46a69d70162526 23-Jul-2009 Anders Carlsson <andersca@mac.com> Set field info for unions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76856 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
2cc8f1740d88362292822e397db6085084399599 23-Jul-2009 Anders Carlsson <andersca@mac.com> Handle zero width bit fields in unions correctly (by ignoring them).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76847 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
5a6e398eafa48c56e8741ad2cd36630badd98f30 23-Jul-2009 Anders Carlsson <andersca@mac.com> Implement union layout support.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
45372a6fdcd2b0840704569478db456822e02bae 23-Jul-2009 Anders Carlsson <andersca@mac.com> Check in CGRecordLayoutBuilder which is a reimplementation of the record layout code. (Yay, no more packed structs unless absolutely necessary). We currently don't use the layouts being built but that will change when the new code is mature enough :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp