History log of /external/clang/test/CodeGen/override-layout.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b9cd498fd40fef5e2eed987ae2c31d0bfdf35f8d 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Try harder to get X7 defined

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149072 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGen/override-layout.c
a2a50282c34b6e1f95c5a14c5e2b8927c34427de 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Force layout of more of the unions and structures in this test

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGen/override-layout.c
13663926db6e62c0ed5203d8ec4e543b2c190f0f 26-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Suppress any warnings from this test. They aren't interesting, and they
end up in the same output file as the layout stuff. There may even be
a race condition which is causing this output to confuse the FileCheck
in some cases. I actually don't know how on earth the parsing of the
layout file even works given that there are diagnostics in the middle of
it. ;]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149058 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGen/override-layout.c
453dbcbe30093fbf947a0bec2fbd46e9694eafe9 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Extend the ExternalASTSource interface to allow the AST source to
provide the layout of records, rather than letting Clang compute
the layout itself. LLDB provides the motivation for this feature:
because various layout-altering attributes (packed, aligned, etc.)
don't get reliably get placed into DWARF, the record layouts computed
by LLDB from the reconstructed records differ from the actual layouts,
and badness occurs. This interface lets the DWARF data drive layout,
so we don't need the attributes preserved to get the answer write.

The testing methodology for this change is fun. I've introduced a
variant of -fdump-record-layouts called -fdump-record-layouts-simple
that always has the simple C format and provides size/alignment/field
offsets. There is also a -cc1 option -foverride-record-layout=<file>
to take the output of -fdump-record-layouts-simple and parse it to
produce a set of overridden layouts, which is introduced into the AST
via a testing-only ExternalASTSource (called
LayoutOverrideSource). Each test contains a number of records to lay
out, which use various layout-changing attributes, and then dumps the
layouts. We then run the test again, using the preprocessor to
eliminate the layout-changing attributes entirely (which would give us
different layouts for the records), but supplying the
previously-computed record layouts. Finally, we diff the layouts
produced from the two runs to be sure that they are identical.

Note that this code makes the assumption that we don't *have* to
provide the offsets of bases or virtual bases to get the layout right,
because the alignment attributes don't affect it. I believe this
assumption holds, but if it does not, we can extend
LayoutOverrideSource to also provide base offset information.

Fixes the Clang side of <rdar://problem/10169539>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/CodeGen/override-layout.c