Skip to content

Commit

Permalink
Deprecate the asm! macro
Browse files Browse the repository at this point in the history
  • Loading branch information
Amanieu committed Apr 15, 2020
1 parent c4ca638 commit ce83b49
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 7 deletions.
10 changes: 7 additions & 3 deletions src/libcore/macros/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1316,9 +1316,13 @@ pub(crate) mod builtin {
issue = "70173",
reason = "inline assembly is not stable enough for use and is subject to change"
)]
#[rustc_deprecated(
since = "1.44.0",
reason = "the syntax of asm! will change soon, use llvm_asm! to avoid breakage"
#[cfg_attr(
not(bootstrap),
rustc_deprecated(
since = "1.44.0",
reason = "the syntax of asm! will change soon, use llvm_asm! to avoid breakage",
suggestion = "llvm_asm",
)
)]
#[rustc_builtin_macro]
#[macro_export]
Expand Down
1 change: 1 addition & 0 deletions src/libcore/prelude/v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ pub use crate::fmt::macros::Debug;
pub use crate::hash::macros::Hash;

#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
#[allow(deprecated)]
#[doc(no_inline)]
pub use crate::{
asm, assert, cfg, column, compile_error, concat, concat_idents, env, file, format_args,
Expand Down
1 change: 1 addition & 0 deletions src/libstd/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,7 @@ pub use core::{

// Re-export built-in macros defined through libcore.
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
#[allow(deprecated)]
pub use core::{
asm, assert, cfg, column, compile_error, concat, concat_idents, env, file, format_args,
format_args_nl, global_asm, include, include_bytes, include_str, line, llvm_asm, log_syntax,
Expand Down
1 change: 1 addition & 0 deletions src/libstd/prelude/v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ pub use crate::result::Result::{self, Err, Ok};

// Re-exported built-in macros
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
#[allow(deprecated)]
#[doc(no_inline)]
pub use core::prelude::v1::{
asm, assert, cfg, column, compile_error, concat, concat_idents, env, file, format_args,
Expand Down
1 change: 1 addition & 0 deletions src/test/ui/feature-gates/feature-gate-asm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
fn main() {
unsafe {
asm!(""); //~ ERROR inline assembly is not stable enough
//~^ WARN use of deprecated item 'asm'
llvm_asm!(""); //~ ERROR inline assembly is not stable enough
}
}
12 changes: 10 additions & 2 deletions src/test/ui/feature-gates/feature-gate-asm.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,22 @@ LL | asm!("");
= help: add `#![feature(asm)]` to the crate attributes to enable

error[E0658]: use of unstable library feature 'llvm_asm': inline assembly is not stable enough for use and is subject to change
--> $DIR/feature-gate-asm.rs:6:9
--> $DIR/feature-gate-asm.rs:7:9
|
LL | llvm_asm!("");
| ^^^^^^^^
|
= note: see issue #70173 <https://github.com/rust-lang/rust/issues/70173> for more information
= help: add `#![feature(llvm_asm)]` to the crate attributes to enable

error: aborting due to 2 previous errors
warning: use of deprecated item 'asm': the syntax of asm! will change soon, use llvm_asm! to avoid breakage
--> $DIR/feature-gate-asm.rs:5:9
|
LL | asm!("");
| ^^^ help: replace the use of the deprecated item: `llvm_asm`
|
= note: `#[warn(deprecated)]` on by default

error: aborting due to 2 previous errors; 1 warning emitted

For more information about this error, try `rustc --explain E0658`.
1 change: 1 addition & 0 deletions src/test/ui/feature-gates/feature-gate-asm2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
fn main() {
unsafe {
println!("{:?}", asm!("")); //~ ERROR inline assembly is not stable
//~^ WARN use of deprecated item 'asm'
println!("{:?}", llvm_asm!("")); //~ ERROR inline assembly is not stable
}
}
12 changes: 10 additions & 2 deletions src/test/ui/feature-gates/feature-gate-asm2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,22 @@ LL | println!("{:?}", asm!(""));
= help: add `#![feature(asm)]` to the crate attributes to enable

error[E0658]: use of unstable library feature 'llvm_asm': inline assembly is not stable enough for use and is subject to change
--> $DIR/feature-gate-asm2.rs:6:26
--> $DIR/feature-gate-asm2.rs:7:26
|
LL | println!("{:?}", llvm_asm!(""));
| ^^^^^^^^
|
= note: see issue #70173 <https://github.com/rust-lang/rust/issues/70173> for more information
= help: add `#![feature(llvm_asm)]` to the crate attributes to enable

error: aborting due to 2 previous errors
warning: use of deprecated item 'asm': the syntax of asm! will change soon, use llvm_asm! to avoid breakage
--> $DIR/feature-gate-asm2.rs:5:26
|
LL | println!("{:?}", asm!(""));
| ^^^ help: replace the use of the deprecated item: `llvm_asm`
|
= note: `#[warn(deprecated)]` on by default

error: aborting due to 2 previous errors; 1 warning emitted

For more information about this error, try `rustc --explain E0658`.

0 comments on commit ce83b49

Please sign in to comment.