error: the `in` operand cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:47:29
   |
LL |     naked_asm!("/* {0} */", in(reg) a)
   |                             ^^ the `in` operand is not meaningful for global-scoped inline assembly, remove it

error: the `in` operand cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:68:10
   |
LL |          in(reg) a,
   |          ^^ the `in` operand is not meaningful for global-scoped inline assembly, remove it

error: the `noreturn` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:88:32
   |
LL |         naked_asm!("", options(noreturn));
   |                                ^^^^^^^^ the `noreturn` option is not meaningful for global-scoped inline assembly

error: the `nomem` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:106:28
   |
LL |     naked_asm!("", options(nomem, preserves_flags));
   |                            ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly

error: the `preserves_flags` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:106:35
   |
LL |     naked_asm!("", options(nomem, preserves_flags));
   |                                   ^^^^^^^^^^^^^^^ the `preserves_flags` option is not meaningful for global-scoped inline assembly

error: the `readonly` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:113:28
   |
LL |     naked_asm!("", options(readonly, nostack), options(pure));
   |                            ^^^^^^^^ the `readonly` option is not meaningful for global-scoped inline assembly

error: the `nostack` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:113:38
   |
LL |     naked_asm!("", options(readonly, nostack), options(pure));
   |                                      ^^^^^^^ the `nostack` option is not meaningful for global-scoped inline assembly

error: the `pure` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:113:56
   |
LL |     naked_asm!("", options(readonly, nostack), options(pure));
   |                                                        ^^^^ the `pure` option is not meaningful for global-scoped inline assembly

error: the `may_unwind` option cannot be used with `naked_asm!`
  --> $DIR/naked-functions.rs:121:28
   |
LL |     naked_asm!("", options(may_unwind));
   |                            ^^^^^^^^^^ the `may_unwind` option is not meaningful for global-scoped inline assembly

error: this is a user specified error
  --> $DIR/naked-functions.rs:169:5
   |
LL |     compile_error!("this is a user specified error")
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: this is a user specified error
  --> $DIR/naked-functions.rs:175:5
   |
LL |     compile_error!("this is a user specified error");
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: asm template must be a string literal
  --> $DIR/naked-functions.rs:182:16
   |
LL |     naked_asm!(invalid_syntax)
   |                ^^^^^^^^^^^^^^

error[E0787]: the `asm!` macro is not allowed in naked functions
  --> $DIR/naked-functions.rs:13:5
   |
LL |     asm!("", options(raw));
   |     ^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error: patterns not allowed in naked function parameters
  --> $DIR/naked-functions.rs:25:5
   |
LL |     mut a: u32,
   |     ^^^^^

error: patterns not allowed in naked function parameters
  --> $DIR/naked-functions.rs:27:5
   |
LL |     &b: &i32,
   |     ^^

error: patterns not allowed in naked function parameters
  --> $DIR/naked-functions.rs:29:6
   |
LL |     (None | Some(_)): Option<std::ptr::NonNull<u8>>,
   |      ^^^^^^^^^^^^^^

error: patterns not allowed in naked function parameters
  --> $DIR/naked-functions.rs:31:5
   |
LL |     P { x, y }: P,
   |     ^^^^^^^^^^

error: referencing function parameters is not allowed in naked functions
  --> $DIR/naked-functions.rs:40:5
   |
LL |     a + 1
   |     ^
   |
   = help: follow the calling convention in asm block to use parameters

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:38:1
   |
LL | pub unsafe extern "C" fn inc(a: u32) -> u32 {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL |     a + 1
   |     ----- not allowed in naked functions

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:52:1
   |
LL | pub unsafe extern "C" fn inc_closure(a: u32) -> u32 {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL |     (|| a + 1)()
   |     ------------ not allowed in naked functions

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:58:1
   |
LL | pub unsafe extern "C" fn unsupported_operands() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL |     let mut a = 0usize;
   |     ------------------- not allowed in naked functions
LL |     let mut b = 0usize;
   |     ------------------- not allowed in naked functions
LL |     let mut c = 0usize;
   |     ------------------- not allowed in naked functions
LL |     let mut d = 0usize;
   |     ------------------- not allowed in naked functions
LL |     let mut e = 0usize;
   |     ------------------- not allowed in naked functions

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:80:1
   |
LL | pub extern "C" fn missing_assembly() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:85:1
   |
LL | pub extern "C" fn too_many_asm_blocks() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
LL |         naked_asm!("");
   |         -------------- multiple `naked_asm!` invocations are not allowed in naked functions

error: referencing function parameters is not allowed in naked functions
  --> $DIR/naked-functions.rs:98:11
   |
LL |         *&y
   |           ^
   |
   = help: follow the calling convention in asm block to use parameters

error[E0787]: naked functions must contain a single `naked_asm!` invocation
  --> $DIR/naked-functions.rs:96:5
   |
LL |     pub extern "C" fn inner(y: usize) -> usize {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL |         *&y
   |         --- not allowed in naked functions

warning: Rust ABI is unsupported in naked functions
  --> $DIR/naked-functions.rs:126:1
   |
LL | pub unsafe fn default_abi() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(undefined_naked_function_abi)]` on by default

warning: Rust ABI is unsupported in naked functions
  --> $DIR/naked-functions.rs:132:1
   |
LL | pub unsafe fn rust_abi() {
   | ^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 25 previous errors; 2 warnings emitted

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