diff options
author | Rui Ueyama <ruiu@google.com> | 2014-03-27 22:08:26 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2014-03-27 22:08:26 +0000 |
commit | 8be4ce254a49cbf36253b7566a6fd4cb1c947a3e (patch) | |
tree | f38a07af0316c5fbcd4ec7a3d5eac2ff3b2c315c /clang/lib/Basic/Attributes.cpp | |
parent | 1c43329e2998ddd94a6b9e65d495ec1f01e600aa (diff) | |
download | llvm-8be4ce254a49cbf36253b7566a6fd4cb1c947a3e.zip llvm-8be4ce254a49cbf36253b7566a6fd4cb1c947a3e.tar.gz llvm-8be4ce254a49cbf36253b7566a6fd4cb1c947a3e.tar.bz2 |
Do not use layout-before to layout atoms.
Currently we use both layout-after and layout-before edges to specify atom
orders in the resulting executable. We have a complex piece of code in
LayoutPass.cpp to deal with both types of layout specifiers.
(In the following description, I denote "Atom A having a layout-after edge
to B" as "A -> B", and A's layout-before to B as "A => B".)
However, that complexity is not really needed for this reason: If there
are atoms such that A => B, B -> A is always satisifed, so using only layout-
after relationships will yield the same result as the current code.
Actually we have a piece of complex code that verifies that, for each A -> B,
B => [ X => Y => ... => Z => ] A is satsified, where X, Y, ... Z are all
zero-size atoms. We can get rid of the code from our codebase because layout-
before is basically redundant.
I think we can simplify the code for layout-after even more than this, but
I want to just remove this pass for now for simplicity.
Layout-before edges are still there for dead-stripping, so this change won't
break it. We will remove layout-before in a followup patch once we fix the
dead-stripping pass.
Differential Revision: http://llvm-reviews.chandlerc.com/D3164
llvm-svn: 204966
Diffstat (limited to 'clang/lib/Basic/Attributes.cpp')
0 files changed, 0 insertions, 0 deletions