From 178c1bbb5bcacf500f2d99d90d115b91a0727d42 Mon Sep 17 00:00:00 2001
From: Amanieu d'Antras <amanieu@gmail.com>
Date: Wed, 26 Aug 2020 10:46:51 +0100
Subject: [PATCH 1/2] Fix a typo in #75781

---
 src/librustc_codegen_llvm/asm.rs       | 2 +-
 src/test/assembly/asm/aarch64-types.rs | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/librustc_codegen_llvm/asm.rs b/src/librustc_codegen_llvm/asm.rs
index 4fef94dde5f..a468d09c2d9 100644
--- a/src/librustc_codegen_llvm/asm.rs
+++ b/src/librustc_codegen_llvm/asm.rs
@@ -485,7 +485,7 @@ fn reg_to_llvm(reg: InlineAsmRegOrRegClass, layout: Option<&TyAndLayout<'tcx>>)
                 format!("{{{}{}}}", class, idx)
             } else if reg == InlineAsmReg::AArch64(AArch64InlineAsmReg::x30) {
                 // LLVM doesn't recognize x30
-                "lr".to_string()
+                "{lr}".to_string()
             } else {
                 format!("{{{}}}", reg.name())
             }
diff --git a/src/test/assembly/asm/aarch64-types.rs b/src/test/assembly/asm/aarch64-types.rs
index e39f74c916c..73bf369e2da 100644
--- a/src/test/assembly/asm/aarch64-types.rs
+++ b/src/test/assembly/asm/aarch64-types.rs
@@ -555,6 +555,11 @@ check_reg!(v0_f32x4 f32x4 "s0" "fmov");
 check_reg!(v0_f64x2 f64x2 "s0" "fmov");
 
 // Regression test for #75761
+// CHECK-LABEL: issue_75761:
+// CHECK: stp {{{.*}}}lr
+// CHECK: //APP
+// CHECK: //NO_APP
+// CHECK: ldp {{{.*}}}lr
 pub unsafe fn issue_75761() {
     asm!("", out("v0") _, out("x30") _);
 }

From 9ae5e95b28be59a67bee4236fba06dbc0cfe8552 Mon Sep 17 00:00:00 2001
From: Amanieu d'Antras <amanieu@gmail.com>
Date: Fri, 28 Aug 2020 18:53:09 +0100
Subject: [PATCH 2/2] Fix test

---
 src/test/assembly/asm/aarch64-types.rs | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/test/assembly/asm/aarch64-types.rs b/src/test/assembly/asm/aarch64-types.rs
index 73bf369e2da..8dd1f3c873f 100644
--- a/src/test/assembly/asm/aarch64-types.rs
+++ b/src/test/assembly/asm/aarch64-types.rs
@@ -96,6 +96,17 @@ pub unsafe fn sym_static() {
     asm!("adr x0, {}", sym extern_static);
 }
 
+// Regression test for #75761
+// CHECK-LABEL: issue_75761:
+// CHECK: str {{.*}}x30
+// CHECK: //APP
+// CHECK: //NO_APP
+// CHECK: ldr {{.*}}x30
+#[no_mangle]
+pub unsafe fn issue_75761() {
+    asm!("", out("v0") _, out("x30") _);
+}
+
 macro_rules! check {
     ($func:ident $ty:ident $class:ident $mov:literal $modifier:literal) => {
         #[no_mangle]
@@ -553,13 +564,3 @@ check_reg!(v0_f32x4 f32x4 "s0" "fmov");
 // CHECK: fmov s0, s0
 // CHECK: //NO_APP
 check_reg!(v0_f64x2 f64x2 "s0" "fmov");
-
-// Regression test for #75761
-// CHECK-LABEL: issue_75761:
-// CHECK: stp {{{.*}}}lr
-// CHECK: //APP
-// CHECK: //NO_APP
-// CHECK: ldp {{{.*}}}lr
-pub unsafe fn issue_75761() {
-    asm!("", out("v0") _, out("x30") _);
-}