diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2018-04-27 16:29:57 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2018-04-27 16:29:57 +0000 |
commit | 980440b09b577ea9e22c3d373467b12521b65eb6 (patch) | |
tree | c1a759e9640e5ce8dc2c580901ab1d33094c1856 /lld/ELF/MarkLive.cpp | |
parent | 4a738dcb79ae59d386cd97296451b4b4d3ad44b9 (diff) |
Split merge sections early.
Now that getSectionPiece is fast (uses a hash) it is probably OK to
split merge sections early.
The reason I want to do this is to split eh_frame sections in the same
place.
This does mean that we have to decompress early. Given that the only
compressed sections are debug info, I don't think we are missing much.
It is a small improvement: 0.5% on the geometric mean.
Diffstat (limited to 'lld/ELF/MarkLive.cpp')
-rw-r--r-- | lld/ELF/MarkLive.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lld/ELF/MarkLive.cpp b/lld/ELF/MarkLive.cpp index 6b80e8e77aa..d7cc74e48c1 100644 --- a/lld/ELF/MarkLive.cpp +++ b/lld/ELF/MarkLive.cpp @@ -207,7 +207,7 @@ template <class ELFT> static void doGcSections() { // (splittable) sections, each piece of data has independent liveness bit. // So we explicitly tell it which offset is in use. if (auto *MS = dyn_cast<MergeInputSection>(Sec)) - MS->markLiveAt(Offset); + MS->getSectionPiece(Offset)->Live = true; if (Sec->Live) return; |