文件最后提交记录最后更新时间
[lld-macho] Implement ICF ICF = Identical C(ode|OMDAT) Folding This is the LLD ELF/COFF algorithm, adapted for MachO. So far, only -icf all is supported. In order to support -icf safe, we will need to port address-significance tables (.addrsig directives) to MachO, which will come in later diffs. check-{llvm,clang,lld} have 0 regressions for lld -icf all vs. baseline ld64. We only run ICF on __TEXT,__text for reasons explained in the block comment in ConcatOutputSection.cpp. Here is the perf impact for linking chromium_framekwork on a Mac Pro (16-core Xeon W) for the non-ICF case vs. pre-ICF: N Min Max Median Avg Stddev x 20 4.27 4.44 4.34 4.349 0.043029977 + 20 4.37 4.46 4.405 4.4115 0.025188761 Difference at 95.0% confidence 0.0625 +/- 0.0225658 1.43711% +/- 0.518873% (Student's t, pooled s = 0.0352566) Reviewed By: #lld-macho, int3 Differential Revision: https://reviews.llvm.org/D1032924 年前
[lld-macho] Check for arch compatibility when loading ObjFiles and TBDs The silent failures had confused me a few times. I haven't added a similar check for platform yet as we don't yet have logic to infer the platform automatically, and so adding that check would require updating dozens of test files. Reviewed By: #lld-macho, thakis, alexshap Differential Revision: https://reviews.llvm.org/D972095 年前
[lld/mac] Fix --start-lib/--end-lib with split thinlto inputs Fixes #59162. The test has a comment explaining what's going on. See also Symbol::extract() in lld/ELF/Symbols.cpp. The included test sadly also passes if I pass just bd448f01a62, while doing that isn't enough to make my bigger repro case work (if I port just that, something else asserts later on, but with this fix here everything's fine in my bigger repro). Differential Revision: https://reviews.llvm.org/D1391993 年前
[lld-macho][re-land] Warn on method name collisions from category definitions This implements ld64's checks for duplicate method names in categories & classes. In addition, this sets us up for implementing Obj-C category merging. This diff handles the most of the parsing work; what's left is rewriting those category / class structures. Numbers for chromium_framework: base diff difference (95% CI) sys_time 2.182 ± 0.027 2.200 ± 0.047 [ -0.2% .. +1.8%] user_time 6.451 ± 0.034 6.479 ± 0.062 [ -0.0% .. +0.9%] wall_time 6.841 ± 0.048 6.885 ± 0.105 [ -0.1% .. +1.4%] samples 33 22 Fixes https://github.com/llvm/llvm-project/issues/54912. Issues seen with the previous land will be fixed in the next commit. Reviewed By: #lld-macho, thevinster, oontvoo Differential Revision: https://reviews.llvm.org/D1429163 年前