-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
asm: Allow the use of r8-r14 as clobbers on Thumb1 #93877
Conversation
r? @jackh726 (rust-highfive has picked a reviewer for you, use r? to override) |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Not my area of expertise r? rust-lang/compiler |
Not mine either... |
r? @nagisa |
@@ -298,54 +299,87 @@ impl InlineAsmReg { | |||
arch: InlineAsmArch, | |||
target_features: &FxHashSet<Symbol>, | |||
target: &Target, | |||
is_clobber: bool, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if it wouldn't make sense to proactively make this a tri-state enum describing the context (clobber, input, output). I can imagine it being useful when we decide to actually start adding constraint classes that are applicable to input or output only.
And today it would serve as a way to avoid bool proliferation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a followup PR based on this one which is a pain to rebase. I'll make the change there.
LGTM r=me with or without replacement of the bool. |
@bors r=nagisa |
📌 Commit 5ab3483b360dae11f92c9e8fd7a90035934f60e0 has been approved by |
late, | ||
expr: self.lower_expr_mut(expr), | ||
} | ||
} | ||
InlineAsmOperand::SplitInOut { reg, late, ref in_expr, ref out_expr } => { | ||
hir::InlineAsmOperand::SplitInOut { | ||
reg: lower_reg(reg), | ||
reg: lower_reg(reg, out_expr.is_none()), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't this be false? Would this permit inout("r8") 1 => _
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's still a clobber just like out("r8") _
is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually that's a good point, this is incorrect since we don't want to allow r8
to be used as an input in Thumb1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps the name could be clobber_only
instead of is_clobber
to make it more clear. And we might want an unit test.
@bors r- |
Previously these were entirely disallowed, except for r11 which was allowed by accident.
@bors r=nagisa |
📌 Commit 5ab3483b360dae11f92c9e8fd7a90035934f60e0 has been approved by |
@bors r=nagisa |
📌 Commit 11250b8 has been approved by |
…askrgr Rollup of 10 pull requests Successful merges: - rust-lang#89892 (Suggest `impl Trait` return type when incorrectly using a generic return type) - rust-lang#91675 (Add MemTagSanitizer Support) - rust-lang#92806 (Add more information to `impl Trait` error) - rust-lang#93497 (Pass `--test` flag through rustdoc to rustc so `#[test]` functions can be scraped) - rust-lang#93814 (mips64-openwrt-linux-musl: correct soft-foat) - rust-lang#93847 (kmc-solid: Use the filesystem thread-safety wrapper) - rust-lang#93877 (asm: Allow the use of r8-r14 as clobbers on Thumb1) - rust-lang#93892 (Only mark projection as ambiguous if GAT substs are constrained) - rust-lang#93915 (Implement --check-cfg option (RFC 3013), take 2) - rust-lang#93953 (Add the `known-bug` test directive, use it, and do some cleanup) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Previously these were entirely disallowed, except for r11 which was allowed by accident.
cc @hudson-ayers