Repository navigation
Conversation
|
r? @cuviper rustbot has assigned @cuviper. Use Why was this reviewer chosen?The reviewer was selected based on:
|
|
@rustbot label llvm-main |
|
r? @nikic |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@MaskRay I'm curious how LibraryOptions is supposed to be adopted incrementally. Ideally, we would be parsing the options per-context -- but while not all options are per-context, the ones which are not would get parsed globally multiple times. That's not (thread) safe, right? So does that mean that until the global options are entirely gone, we should basically keep using a global LibraryOptions, rather than a per-context (and thus per-thread) one? (That is, do what this PR does?) |
This comment has been minimized.
This comment has been minimized.
ff1387f to
e44056b
Compare
This comment has been minimized.
This comment has been minimized.
|
I rebased this patch so the LLVM/Rust @Head CI can keep passing. |
There was a problem hiding this comment.
Now that llvm/llvm-project#234820 has landed, I wonder if some parts of this have become unnecessary?
I think things would mostly "just work" if we used the C API for option parsing?
This comment has been minimized.
This comment has been minimized.
Yes, I think so too. Let's close this. |
|
Hmm no, tests/codegen-llvm/pgo-counter-bias.rs still fails without this. I must have had the wrong branch checked out when I tested locally. I'll start by rebasing this. |
e44056b to
ff1387f
Compare
This comment has been minimized.
This comment has been minimized.
ff1387f to
626d888
Compare
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
|
I tried switching to |
I think if error reporting is the only issue, we should probably add an LLVMParseCommandLineOptionsWithError binding that also provides the error message as a string, and then use that in Rust. |
…7044-gc3223914-1 / 8a9dd7abdf013ec10cfeaaa3685feba18ef1c90c-6 : 96a18bf5ffa2b24f9cf3d1c731a9eb121c1acad9-2 https://chromium.googlesource.com/external/github.com/llvm/llvm-project/+log/e063be79..c3223914 https://chromium.googlesource.com/external/github.com/rust-lang/rust/+log/8a9dd7abdf01..96a18bf5ffa2 Ran: tools/clang/scripts/upload_revision.py --no-git Additional changes included with this roll: - build.py: disable watchOS/tvOS/visionOS in BUILTINS_CMAKE_ARGS on macOS after LLVM 7b1ff3691852 (#234050). - build_rust.py: cherry-pick rust-lang/rust#164591 for crbug.com/575030918. - generate_system_modulemap.py: handle 'reflection' in _requires_met() after LLVM 6006957c522e (#211653). - devtools_protocol_browsertest.cc: disable DisposeBrowserContextClosesFrozenTabsAcrossTabModelRemoval for crbug.com/580985658. Bug: 576214311 Change-Id: I22101186e285d6f1cd3de6a41ac5886891a03634 Tricium: skip Include-Ci-Only-Tests: true Cq-Include-Trybots: chromium/try:android-cronet-riscv64-dbg Cq-Include-Trybots: chromium/try:android-cronet-riscv64-rel Cq-Include-Trybots: chromium/try:chromeos-amd64-generic-cfi-thin-lto-rel Cq-Include-Trybots: chromium/try:fuchsia-arm64-cast-receiver-rel Cq-Include-Trybots: chromium/try:ios-catalyst,win-asan,android-official Cq-Include-Trybots: chromium/try:linux-cast-x64-rel Cq-Include-Trybots: chromium/try:linux-chromeos-dbg Cq-Include-Trybots: chromium/try:linux-swangle-try-x64,win-swangle-try-x86 Cq-Include-Trybots: chromium/try:linux-v4l2-codec-rel Cq-Include-Trybots: chromium/try:linux-wayland-mutter-rel Cq-Include-Trybots: chromium/try:linux-x64-libfuzzer-msan-rel-tests Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac-official,linux-official Cq-Include-Trybots: chromium/try:mac13-arm64-rel,mac_chromium_asan_rel_ng Cq-Include-Trybots: chromium/try:mac15-x64-rel-tests Cq-Include-Trybots: chromium/try:win-official,win32-official Cq-Include-Trybots: chrome/try:android-arm32-pgo,android-arm64-pgo Cq-Include-Trybots: chrome/try:android-x64-rel-ready Cq-Include-Trybots: chrome/try:chromeos-brya-chrome,chromeos-eve-chrome Cq-Include-Trybots: chrome/try:chromeos-volteer-chrome Cq-Include-Trybots: chrome/try:iphone-device,ipad-device Cq-Include-Trybots: chrome/try:linux-chromeos-chrome Cq-Include-Trybots: chrome/try:linux-pgo,win32-pgo,win64-pgo Cq-Include-Trybots: chrome/try:win-chrome,win64-chrome,linux-chrome,mac-chrome Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8682176 Commit-Queue: Zequan Wu <zequanwu@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1734578}
…7044-gc3223914-1 / 8a9dd7abdf013ec10cfeaaa3685feba18ef1c90c-6 : 96a18bf5ffa2b24f9cf3d1c731a9eb121c1acad9-2 https://chromium.googlesource.com/external/github.com/llvm/llvm-project/+log/e063be79..c3223914 https://chromium.googlesource.com/external/github.com/rust-lang/rust/+log/8a9dd7abdf01..96a18bf5ffa2 Ran: tools/clang/scripts/upload_revision.py --no-git Additional changes included with this roll: - build.py: disable watchOS/tvOS/visionOS in BUILTINS_CMAKE_ARGS on macOS after LLVM 7b1ff3691852 (#234050). - build_rust.py: cherry-pick rust-lang/rust#164591 for crbug.com/575030918. - generate_system_modulemap.py: handle 'reflection' in _requires_met() after LLVM 6006957c522e (#211653). - devtools_protocol_browsertest.cc: disable DisposeBrowserContextClosesFrozenTabsAcrossTabModelRemoval for crbug.com/580985658. Bug: 576214311 Change-Id: I22101186e285d6f1cd3de6a41ac5886891a03634 Tricium: skip Include-Ci-Only-Tests: true Cq-Include-Trybots: chromium/try:android-cronet-riscv64-dbg Cq-Include-Trybots: chromium/try:android-cronet-riscv64-rel Cq-Include-Trybots: chromium/try:chromeos-amd64-generic-cfi-thin-lto-rel Cq-Include-Trybots: chromium/try:fuchsia-arm64-cast-receiver-rel Cq-Include-Trybots: chromium/try:ios-catalyst,win-asan,android-official Cq-Include-Trybots: chromium/try:linux-cast-x64-rel Cq-Include-Trybots: chromium/try:linux-chromeos-dbg Cq-Include-Trybots: chromium/try:linux-swangle-try-x64,win-swangle-try-x86 Cq-Include-Trybots: chromium/try:linux-v4l2-codec-rel Cq-Include-Trybots: chromium/try:linux-wayland-mutter-rel Cq-Include-Trybots: chromium/try:linux-x64-libfuzzer-msan-rel-tests Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac-official,linux-official Cq-Include-Trybots: chromium/try:mac13-arm64-rel,mac_chromium_asan_rel_ng Cq-Include-Trybots: chromium/try:mac15-x64-rel-tests Cq-Include-Trybots: chromium/try:win-official,win32-official Cq-Include-Trybots: chrome/try:android-arm32-pgo,android-arm64-pgo Cq-Include-Trybots: chrome/try:android-x64-rel-ready Cq-Include-Trybots: chrome/try:chromeos-brya-chrome,chromeos-eve-chrome Cq-Include-Trybots: chrome/try:chromeos-volteer-chrome Cq-Include-Trybots: chrome/try:iphone-device,ipad-device Cq-Include-Trybots: chrome/try:linux-chromeos-chrome Cq-Include-Trybots: chrome/try:linux-pgo,win32-pgo,win64-pgo Cq-Include-Trybots: chrome/try:win-chrome,win64-chrome,linux-chrome,mac-chrome Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8682176 Commit-Queue: Zequan Wu <zequanwu@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1734578} NOKEYCHECK=True GitOrigin-RevId: dda5e4e23b25032802763bef8e4833b85b084189
…it-17044-gc3223914, sub 2) Chromium changes: https://chromium.googlesource.com/chromium/src/+/dda5e4e23b25032802763bef8e4833b85b084189 commit dda5e4e23b25032802763bef8e4833b85b084189 Author: Zequan Wu <zequanwu@google.com> Date: Tue Nov 3 15:58:11 2026 -0800 Roll clang+rust llvmorg-24-init-14453-ge063be79-1 : llvmorg-24-init-17044-gc3223914-1 / 8a9dd7abdf013ec10cfeaaa3685feba18ef1c90c-6 : 96a18bf5ffa2b24f9cf3d1c731a9eb121c1acad9-2 https://chromium.googlesource.com/external/github.com/llvm/llvm-project/+log/e063be79..c3223914 https://chromium.googlesource.com/external/github.com/rust-lang/rust/+log/8a9dd7abdf01..96a18bf5ffa2 Ran: tools/clang/scripts/upload_revision.py --no-git Additional changes included with this roll: - build.py: disable watchOS/tvOS/visionOS in BUILTINS_CMAKE_ARGS on macOS after LLVM 7b1ff3691852 (#234050). - build_rust.py: cherry-pick rust-lang/rust#164591 for crbug.com/575030918. - generate_system_modulemap.py: handle 'reflection' in _requires_met() after LLVM 6006957c522e (#211653). - devtools_protocol_browsertest.cc: disable DisposeBrowserContextClosesFrozenTabsAcrossTabModelRemoval for crbug.com/580985658. Bug: 576214311 Change-Id: I22101186e285d6f1cd3de6a41ac5886891a03634 Tricium: skip Include-Ci-Only-Tests: true Cq-Include-Trybots: chromium/try:android-cronet-riscv64-dbg Cq-Include-Trybots: chromium/try:android-cronet-riscv64-rel Cq-Include-Trybots: chromium/try:chromeos-amd64-generic-cfi-thin-lto-rel Cq-Include-Trybots: chromium/try:fuchsia-arm64-cast-receiver-rel Cq-Include-Trybots: chromium/try:ios-catalyst,win-asan,android-official Cq-Include-Trybots: chromium/try:linux-cast-x64-rel Cq-Include-Trybots: chromium/try:linux-chromeos-dbg Cq-Include-Trybots: chromium/try:linux-swangle-try-x64,win-swangle-try-x86 Cq-Include-Trybots: chromium/try:linux-v4l2-codec-rel Cq-Include-Trybots: chromium/try:linux-wayland-mutter-rel Cq-Include-Trybots: chromium/try:linux-x64-libfuzzer-msan-rel-tests Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac-official,linux-official Cq-Include-Trybots: chromium/try:mac13-arm64-rel,mac_chromium_asan_rel_ng Cq-Include-Trybots: chromium/try:mac15-x64-rel-tests Cq-Include-Trybots: chromium/try:win-official,win32-official Cq-Include-Trybots: chrome/try:android-arm32-pgo,android-arm64-pgo Cq-Include-Trybots: chrome/try:android-x64-rel-ready Cq-Include-Trybots: chrome/try:chromeos-brya-chrome,chromeos-eve-chrome Cq-Include-Trybots: chrome/try:chromeos-volteer-chrome Cq-Include-Trybots: chrome/try:iphone-device,ipad-device Cq-Include-Trybots: chrome/try:linux-chromeos-chrome Cq-Include-Trybots: chrome/try:linux-pgo,win32-pgo,win64-pgo Cq-Include-Trybots: chrome/try:win-chrome,win64-chrome,linux-chrome,mac-chrome Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8682176 Commit-Queue: Zequan Wu <zequanwu@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1734578}
…it-17044-gc3223914, sub 2) Chromium changes: https://chromium.googlesource.com/chromium/src/+/dda5e4e23b25032802763bef8e4833b85b084189 commit dda5e4e23b25032802763bef8e4833b85b084189 Author: Zequan Wu <zequanwu@google.com> Date: Tue Nov 3 15:58:11 2026 -0800 Roll clang+rust llvmorg-24-init-14453-ge063be79-1 : llvmorg-24-init-17044-gc3223914-1 / 8a9dd7abdf013ec10cfeaaa3685feba18ef1c90c-6 : 96a18bf5ffa2b24f9cf3d1c731a9eb121c1acad9-2 https://chromium.googlesource.com/external/github.com/llvm/llvm-project/+log/e063be79..c3223914 https://chromium.googlesource.com/external/github.com/rust-lang/rust/+log/8a9dd7abdf01..96a18bf5ffa2 Ran: tools/clang/scripts/upload_revision.py --no-git Additional changes included with this roll: - build.py: disable watchOS/tvOS/visionOS in BUILTINS_CMAKE_ARGS on macOS after LLVM 7b1ff3691852 (#234050). - build_rust.py: cherry-pick rust-lang/rust#164591 for crbug.com/575030918. - generate_system_modulemap.py: handle 'reflection' in _requires_met() after LLVM 6006957c522e (#211653). - devtools_protocol_browsertest.cc: disable DisposeBrowserContextClosesFrozenTabsAcrossTabModelRemoval for crbug.com/580985658. Bug: 576214311 Change-Id: I22101186e285d6f1cd3de6a41ac5886891a03634 Tricium: skip Include-Ci-Only-Tests: true Cq-Include-Trybots: chromium/try:android-cronet-riscv64-dbg Cq-Include-Trybots: chromium/try:android-cronet-riscv64-rel Cq-Include-Trybots: chromium/try:chromeos-amd64-generic-cfi-thin-lto-rel Cq-Include-Trybots: chromium/try:fuchsia-arm64-cast-receiver-rel Cq-Include-Trybots: chromium/try:ios-catalyst,win-asan,android-official Cq-Include-Trybots: chromium/try:linux-cast-x64-rel Cq-Include-Trybots: chromium/try:linux-chromeos-dbg Cq-Include-Trybots: chromium/try:linux-swangle-try-x64,win-swangle-try-x86 Cq-Include-Trybots: chromium/try:linux-v4l2-codec-rel Cq-Include-Trybots: chromium/try:linux-wayland-mutter-rel Cq-Include-Trybots: chromium/try:linux-x64-libfuzzer-msan-rel-tests Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac-official,linux-official Cq-Include-Trybots: chromium/try:mac13-arm64-rel,mac_chromium_asan_rel_ng Cq-Include-Trybots: chromium/try:mac15-x64-rel-tests Cq-Include-Trybots: chromium/try:win-official,win32-official Cq-Include-Trybots: chrome/try:android-arm32-pgo,android-arm64-pgo Cq-Include-Trybots: chrome/try:android-x64-rel-ready Cq-Include-Trybots: chrome/try:chromeos-brya-chrome,chromeos-eve-chrome Cq-Include-Trybots: chrome/try:chromeos-volteer-chrome Cq-Include-Trybots: chrome/try:iphone-device,ipad-device Cq-Include-Trybots: chrome/try:linux-chromeos-chrome Cq-Include-Trybots: chrome/try:linux-pgo,win32-pgo,win64-pgo Cq-Include-Trybots: chrome/try:win-chrome,win64-chrome,linux-chrome,mac-chrome Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8682176 Commit-Queue: Zequan Wu <zequanwu@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1734578}
…it-17044-gc3223914, sub 2) Chromium changes: https://chromium.googlesource.com/chromium/src/+/dda5e4e23b25032802763bef8e4833b85b084189 commit dda5e4e23b25032802763bef8e4833b85b084189 Author: Zequan Wu <zequanwu@google.com> Date: Tue Nov 3 15:58:11 2026 -0800 Roll clang+rust llvmorg-24-init-14453-ge063be79-1 : llvmorg-24-init-17044-gc3223914-1 / 8a9dd7abdf013ec10cfeaaa3685feba18ef1c90c-6 : 96a18bf5ffa2b24f9cf3d1c731a9eb121c1acad9-2 https://chromium.googlesource.com/external/github.com/llvm/llvm-project/+log/e063be79..c3223914 https://chromium.googlesource.com/external/github.com/rust-lang/rust/+log/8a9dd7abdf01..96a18bf5ffa2 Ran: tools/clang/scripts/upload_revision.py --no-git Additional changes included with this roll: - build.py: disable watchOS/tvOS/visionOS in BUILTINS_CMAKE_ARGS on macOS after LLVM 7b1ff3691852 (#234050). - build_rust.py: cherry-pick rust-lang/rust#164591 for crbug.com/575030918. - generate_system_modulemap.py: handle 'reflection' in _requires_met() after LLVM 6006957c522e (#211653). - devtools_protocol_browsertest.cc: disable DisposeBrowserContextClosesFrozenTabsAcrossTabModelRemoval for crbug.com/580985658. Bug: 576214311 Change-Id: I22101186e285d6f1cd3de6a41ac5886891a03634 Tricium: skip Include-Ci-Only-Tests: true Cq-Include-Trybots: chromium/try:android-cronet-riscv64-dbg Cq-Include-Trybots: chromium/try:android-cronet-riscv64-rel Cq-Include-Trybots: chromium/try:chromeos-amd64-generic-cfi-thin-lto-rel Cq-Include-Trybots: chromium/try:fuchsia-arm64-cast-receiver-rel Cq-Include-Trybots: chromium/try:ios-catalyst,win-asan,android-official Cq-Include-Trybots: chromium/try:linux-cast-x64-rel Cq-Include-Trybots: chromium/try:linux-chromeos-dbg Cq-Include-Trybots: chromium/try:linux-swangle-try-x64,win-swangle-try-x86 Cq-Include-Trybots: chromium/try:linux-v4l2-codec-rel Cq-Include-Trybots: chromium/try:linux-wayland-mutter-rel Cq-Include-Trybots: chromium/try:linux-x64-libfuzzer-msan-rel-tests Cq-Include-Trybots: chromium/try:linux_chromium_cfi_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_chromeos_msan_rel_ng Cq-Include-Trybots: chromium/try:linux_chromium_msan_rel_ng Cq-Include-Trybots: chromium/try:mac-official,linux-official Cq-Include-Trybots: chromium/try:mac13-arm64-rel,mac_chromium_asan_rel_ng Cq-Include-Trybots: chromium/try:mac15-x64-rel-tests Cq-Include-Trybots: chromium/try:win-official,win32-official Cq-Include-Trybots: chrome/try:android-arm32-pgo,android-arm64-pgo Cq-Include-Trybots: chrome/try:android-x64-rel-ready Cq-Include-Trybots: chrome/try:chromeos-brya-chrome,chromeos-eve-chrome Cq-Include-Trybots: chrome/try:chromeos-volteer-chrome Cq-Include-Trybots: chrome/try:iphone-device,ipad-device Cq-Include-Trybots: chrome/try:linux-chromeos-chrome Cq-Include-Trybots: chrome/try:linux-pgo,win32-pgo,win64-pgo Cq-Include-Trybots: chrome/try:win-chrome,win64-chrome,linux-chrome,mac-chrome Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8682176 Commit-Queue: Zequan Wu <zequanwu@google.com> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1734578}
LLVM has been refactoring how it stores its internal (-mllvm) options recently, with the goal of getting rid of the global cl::opt objects.
After http://github.com/llvm/llvm-project/pull/233044 LTO passes no longer uses the global options, which would cause codegen-llvm/pgo-counter-bias.rs to fail since it relies on the -runtime-counter-relocation option to get passed to LTO.
IIUC, ideally we should change LLVMRustSetLLVMOptions to take an LLVMContext as argument and parse the options into that. However, I think by the time we currently call it, no such context has been created yet.
Instead, this PR maintains the status quo by parsing the options into a global object, which is then assigned to new LLVMContexts as they are created.