error[E0382]: use of moved value: `x`
  --> $DIR/borrowck-asm.rs:26:17
   |
LL |         let x = &mut 0isize;
   |             - move occurs because `x` has type `&mut isize`, which does not implement the `Copy` trait
LL |         unsafe {
LL |             llvm_asm!("nop" : : "r"(x));
   |                                     - value moved here
LL |         }
LL |         let z = x;
   |                 ^ value used here after move

error[E0503]: cannot use `x` because it was mutably borrowed
  --> $DIR/borrowck-asm.rs:33:37
   |
LL |         let y = &mut x;
   |                 ------ borrow of `x` occurs here
LL |         unsafe {
LL |             llvm_asm!("nop" : : "r"(x));
   |                                     ^ use of borrowed `x`
LL |         }
LL |         let z = y;
   |                 - borrow later used here

error[E0384]: cannot assign twice to immutable variable `x`
  --> $DIR/borrowck-asm.rs:41:36
   |
LL |         let x = 3;
   |             -
   |             |
   |             first assignment to `x`
   |             help: consider making this binding mutable: `mut x`
LL |         unsafe {
LL |             llvm_asm!("nop" : "=r"(x));
   |                                    ^ cannot assign twice to immutable variable

error[E0384]: cannot assign twice to immutable variable `x`
  --> $DIR/borrowck-asm.rs:55:36
   |
LL |         let x = 3;
   |             -
   |             |
   |             first assignment to `x`
   |             help: consider making this binding mutable: `mut x`
LL |         unsafe {
LL |             llvm_asm!("nop" : "+r"(x));
   |                                    ^ cannot assign twice to immutable variable

error[E0381]: use of possibly-uninitialized variable: `x`
  --> $DIR/borrowck-asm.rs:62:37
   |
LL |             llvm_asm!("nop" : "=*r"(x));
   |                                     ^ use of possibly-uninitialized `x`

error[E0506]: cannot assign to `x` because it is borrowed
  --> $DIR/borrowck-asm.rs:70:36
   |
LL |         let y = &*x;
   |                 --- borrow of `x` occurs here
LL |         unsafe {
LL |             llvm_asm!("nop" : "+r"(x));
   |                                    ^ assignment to borrowed `x` occurs here
LL |         }
LL |         let z = y;
   |                 - borrow later used here

error[E0382]: use of moved value: `x`
  --> $DIR/borrowck-asm.rs:78:45
   |
LL |         let x = &mut 2;
   |             - move occurs because `x` has type `&mut i32`, which does not implement the `Copy` trait
LL |         unsafe {
LL |             llvm_asm!("nop" : : "r"(x), "r"(x) );
   |                                     -       ^ value used here after move
   |                                     |
   |                                     value moved here

error: aborting due to 7 previous errors

Some errors have detailed explanations: E0381, E0382, E0384, E0503, E0506.
For more information about an error, try `rustc --explain E0381`.
