Skip to content

[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test #141045

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
May 18, 2025

Conversation

dpaoliello
Copy link
Contributor

PR #140758 added the undocumented /arm64hazardfree MSVC linker flag to work around a test failure where LLVM generated code that would trip a hazard in an outdated ARM processor.

Adding this flag caused issues with LLD, as it doesn't recognize it.

Rethinking the issue, using the undocumented flag seems like the incorrect solution: there's no guarantee that the flag won't be removed in the future, or change its meaning.

Instead, I've disabled the problematic test for Arm64 Windows and have filed a bug with the MSVC team to have the check removed: https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134

This PR supersedes #140977

r? @jieyouxu

@rustbot
Copy link
Collaborator

rustbot commented May 15, 2025

These commits modify compiler targets.
(See the Target Tier Policy.)

This PR modifies run-make tests.

cc @jieyouxu

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 15, 2025
@rust-log-analyzer

This comment has been minimized.

Copy link
Member

@jieyouxu jieyouxu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems reasonable, thanks

@jieyouxu
Copy link
Member

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented May 16, 2025

📌 Commit 6128fca has been approved by jieyouxu

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 16, 2025
@fmease fmease changed the title [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and inste… [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test May 18, 2025
fmease added a commit to fmease/rust that referenced this pull request May 18, 2025
[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test

PR rust-lang#140758 added the undocumented `/arm64hazardfree` MSVC linker flag to work around a test failure where LLVM generated code that would trip a hazard in an outdated ARM processor.

Adding this flag caused issues with LLD, as it doesn't recognize it.

Rethinking the issue, using the undocumented flag seems like the incorrect solution: there's no guarantee that the flag won't be removed in the future, or change its meaning.

Instead, I've disabled the problematic test for Arm64 Windows and have filed a bug with the MSVC team to have the check removed: <https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134>

This PR supersedes rust-lang#140977

r? `@jieyouxu`
fmease added a commit to fmease/rust that referenced this pull request May 18, 2025
[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test

PR rust-lang#140758 added the undocumented `/arm64hazardfree` MSVC linker flag to work around a test failure where LLVM generated code that would trip a hazard in an outdated ARM processor.

Adding this flag caused issues with LLD, as it doesn't recognize it.

Rethinking the issue, using the undocumented flag seems like the incorrect solution: there's no guarantee that the flag won't be removed in the future, or change its meaning.

Instead, I've disabled the problematic test for Arm64 Windows and have filed a bug with the MSVC team to have the check removed: <https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134>

This PR supersedes rust-lang#140977

r? ``@jieyouxu``
bors added a commit to rust-lang-ci/rust that referenced this pull request May 18, 2025
Rollup of 7 pull requests

Successful merges:

 - rust-lang#140113 (Add per page TOC in the `rustc` book)
 - rust-lang#140490 (split `asm!` parsing and validation)
 - rust-lang#140924 (Make some `f32`/`f64` tests also run in const-context)
 - rust-lang#141045 ([win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test)
 - rust-lang#141071 (Enable [behind-upstream] triagebot option for rust-lang/rust)
 - rust-lang#141132 (Use `crate::` prefix for root macro suggestions)
 - rust-lang#141139 (Fix Rust for Linux ping group label)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request May 18, 2025
Rollup of 8 pull requests

Successful merges:

 - rust-lang#140113 (Add per page TOC in the `rustc` book)
 - rust-lang#140511 (Stabilize `#![feature(non_null_from_ref)]`)
 - rust-lang#140924 (Make some `f32`/`f64` tests also run in const-context)
 - rust-lang#140966 (Remove #![feature(let_chains)] from library and src/librustdoc)
 - rust-lang#141045 ([win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test)
 - rust-lang#141071 (Enable [behind-upstream] triagebot option for rust-lang/rust)
 - rust-lang#141132 (Use `crate::` prefix for root macro suggestions)
 - rust-lang#141139 (Fix Rust for Linux ping group label)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit e323c64 into rust-lang:master May 18, 2025
6 checks passed
@rustbot rustbot added this to the 1.89.0 milestone May 18, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request May 18, 2025
Rollup merge of rust-lang#141045 - dpaoliello:noarmhazard, r=jieyouxu

[win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test

PR rust-lang#140758 added the undocumented `/arm64hazardfree` MSVC linker flag to work around a test failure where LLVM generated code that would trip a hazard in an outdated ARM processor.

Adding this flag caused issues with LLD, as it doesn't recognize it.

Rethinking the issue, using the undocumented flag seems like the incorrect solution: there's no guarantee that the flag won't be removed in the future, or change its meaning.

Instead, I've disabled the problematic test for Arm64 Windows and have filed a bug with the MSVC team to have the check removed: <https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134>

This PR supersedes rust-lang#140977

r? ```@jieyouxu```
@dpaoliello dpaoliello deleted the noarmhazard branch May 19, 2025 17:24
@dpaoliello
Copy link
Contributor Author

@jieyouxu looks like #140758 made it to 1.88, should this change be ported to Beta?

@jieyouxu
Copy link
Member

Yeah fair enough.

Beta-backport nomination

#140758 added the undocumented /arm64hazardfree MSVC linker flag to work around a test failure where LLVM generated code that would trip a hazard in an outdated ARM processor. However, this causes issues with LLD for the Tier 2 aarch64-pc-windows-msvc target. This PR (#141045) instead drops the undocumented flag, as it cannot be relied upon, and instead disable a failing test (upstream issue: developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134).

@rustbot label: +beta-nominated

@rustbot rustbot added the beta-nominated Nominated for backporting to the compiler in the beta channel. label May 21, 2025
@apiraino
Copy link
Contributor

Beta backport accepted as per compiler team on Zulip and here. A backport PR will be authored by the release team at the end of the current development cycle. Backport labels handled by them.

@rustbot label +beta-accepted

@rustbot rustbot added the beta-accepted Accepted for backporting to the compiler in the beta channel. label May 22, 2025
@cuviper cuviper modified the milestones: 1.89.0, 1.88.0 May 22, 2025
@cuviper cuviper removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label May 22, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request May 23, 2025
[beta] backports and stage0 bump

- bump stage0
- Update the edition guide for let chains rust-lang#140852
- Fix download of GCC from CI on non-nightly channels rust-lang#140901
- Revert "Fix linking statics on Arm64EC rust-lang#140176" rust-lang#141024
- [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test rust-lang#141045
- Do not call name() on rpitit assoc_item rust-lang#141308

r? cuviper
bors added a commit that referenced this pull request May 23, 2025
[beta] backports and stage0 bump

- bump stage0 to 1.87.0
- Update the edition guide for let chains #140852
- Fix download of GCC from CI on non-nightly channels #140901
- Revert "Fix linking statics on Arm64EC #140176" #141024
- [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test #141045
- Do not call name() on rpitit assoc_item #141308
- Temporarily use Windows Server 2022 instead of Windows Server 2025 images #141023

r? cuviper
bors added a commit that referenced this pull request May 24, 2025
[beta] backports and stage0 bump

- bump stage0 to 1.87.0
- Update the edition guide for let chains #140852
- Fix download of GCC from CI on non-nightly channels #140901
- Revert "Fix linking statics on Arm64EC #140176" #141024
- [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test #141045
- Do not call name() on rpitit assoc_item #141308
- Temporarily use Windows Server 2022 instead of Windows Server 2025 images #141023
- Use Docker cache from the current repository #141280
- Move dist-x86_64-linux CI job to GitHub temporarily #141388
- ci: prepare aws access keys for migration #141389

r? cuviper
bors added a commit that referenced this pull request May 25, 2025
[beta] backports and stage0 bump

- bump stage0 to 1.87.0
- Update the edition guide for let chains #140852
- Fix download of GCC from CI on non-nightly channels #140901
- Revert "Fix linking statics on Arm64EC #140176" #141024
- [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test #141045
- Do not call name() on rpitit assoc_item #141308
- Temporarily use Windows Server 2022 instead of Windows Server 2025 images #141023
- Use Docker cache from the current repository #141280
- Move dist-x86_64-linux CI job to GitHub temporarily #141388
- ci: prepare aws access keys for migration #141389
- Add bors environment to CI #141323

r? cuviper
bors added a commit that referenced this pull request May 25, 2025
[beta] backports and stage0 bump

- bump stage0 to 1.87.0
- Update the edition guide for let chains #140852
- Fix download of GCC from CI on non-nightly channels #140901
- Revert "Fix linking statics on Arm64EC #140176" #141024
- [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test #141045
- Do not call name() on rpitit assoc_item #141308
- Temporarily use Windows Server 2022 instead of Windows Server 2025 images #141023
- Use Docker cache from the current repository #141280
- Move dist-x86_64-linux CI job to GitHub temporarily #141388
- ci: prepare aws access keys for migration #141389
- Add bors environment to CI #141323
-  ci: split dist-arm-linux job #141078

r? cuviper
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-run-make Area: port run-make Makefiles to rmake.rs beta-accepted Accepted for backporting to the compiler in the beta channel. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants