commit | 06aa2399b5bc6d4b4fdc0111c65e0aabd1a5a501 | [log] [tgz] |
---|---|---|
author | Heejin Ahn <aheejin@gmail.com> | Tue Nov 28 17:44:32 2023 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Nov 28 17:45:38 2023 -0800 |
tree | 7ec7935b8f1ac5d54a916620d47cff66d694e804 | |
parent | b3523fa18bc7c802110fde9e7959848d12908ddf [diff] |
[lld][WebAssembly] Fix bitcode LTO order in archive parsing (#73095) When doing LTO on multiple archives, the order with which bitcodes are linked to the LTO module is hard to control, given that processing undefined symbols can lead to parsing of an object file, which in turn lead to parsing of another object file before finishing parsing of the previous file. This can result in encountering a non-prevailing comdat first when linking, which can make the the symbol undefined, and the real definition is added later with an additional prefix to avoid duplication (e.g. `__cxx_global_var_init` and `__cxx_global_var_init.2`) So this one-line fix ensures we compile bitcodes in the order that we process comdats, so that when multiple archived bitcode files have the same variable with the same comdat, we make sure that the prevailing comdat will be linked first in the LTO. Fixes #62243. GitOrigin-RevId: 83305faeb54cf254d133e39ddac7f2fee36972cc
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f
.