Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

32-bit ARM: Emit lr instead of r14 when specified as an asm! output register. #82141

Merged
merged 1 commit into from
Feb 16, 2021

Conversation

jrvanwhy
Copy link
Contributor

On 32-bit ARM platforms, the register r14 has the alias lr. When used as an output register in asm!, rustc canonicalizes the name to r14. LLVM only knows the register by the name lr, and rejects it. This changes rustc's LLVM code generation to output lr instead.

closes #82052

r? @nagisa

…tput register.

On 32-bit ARM platforms, the register `r14` has the alias `lr`. When used as an output register in `asm!`, rustc canonicalizes the name to `r14`. LLVM only knows the register by the name `lr`, and rejects it. This changes rustc's LLVM code generation to output `lr` instead.
@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Feb 15, 2021
@sanxiyn
Copy link
Member

sanxiyn commented Feb 15, 2021

@bors r+

@bors
Copy link
Contributor

bors commented Feb 15, 2021

📌 Commit fd21eb1 has been approved by sanxiyn

@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 Feb 15, 2021
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 16, 2021
…as-schievink

Rollup of 19 pull requests

Successful merges:

 - rust-lang#81503 (Suggest to create a new `const` item if the `fn` in the array is a `const fn`)
 - rust-lang#81897 (Add match pattern diagnostics regression test)
 - rust-lang#81975 (Seal the CommandExt, OsStrExt and OsStringExt traits)
 - rust-lang#82009 (const_generics: Dont evaluate array length const when handling errors)
 - rust-lang#82060 (Fix typos in BTreeSet::{first, last} docs)
 - rust-lang#82061 (CTFE validation: catch ReadPointerAsBytes and better error)
 - rust-lang#82063 (Fixed minor typo in catch_unwind docs)
 - rust-lang#82067 (const_generics: Fix incorrect ty::ParamEnv::empty() usage)
 - rust-lang#82077 (Edit `rustc_arena::DropArena` docs)
 - rust-lang#82096 (Fix a typo)
 - rust-lang#82106 (Remove unnecessary `Option` in `default_doc`)
 - rust-lang#82107 (expand: Some cleanup)
 - rust-lang#82118 (Add missing env!-decl variant)
 - rust-lang#82119 (Fix typo in link to CreateSymbolicLinkW documentation.)
 - rust-lang#82120 (Stabilize Arguments::as_str)
 - rust-lang#82129 (Remove redundant bool_to_option feature gate)
 - rust-lang#82133 (Update link for extern prelude.)
 - rust-lang#82141 (32-bit ARM: Emit `lr` instead of `r14` when specified as an `asm!` output register.)
 - rust-lang#82147 (:arrow_up: rust-analyzer)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 1a2675f into rust-lang:master Feb 16, 2021
@rustbot rustbot added this to the 1.52.0 milestone Feb 16, 2021
jrvanwhy added a commit to jrvanwhy/libtock-rs that referenced this pull request Mar 30, 2021
This includes rust-lang/rust#82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.
jrvanwhy added a commit to jrvanwhy/libtock-rs that referenced this pull request Mar 30, 2021
This includes rust-lang/rust#82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.
jrvanwhy added a commit to jrvanwhy/libtock-rs that referenced this pull request Mar 30, 2021
This includes rust-lang/rust#82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.
jrvanwhy added a commit to jrvanwhy/libtock-rs that referenced this pull request Mar 30, 2021
This includes rust-lang/rust#82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.
alistair23 pushed a commit to tock/libtock-rs that referenced this pull request Mar 31, 2021
This includes rust-lang/rust#82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unable to mark ARM32's r14 register as clobbered in asm!
6 participants