]> git.lizzy.rs Git - rust.git/blobdiff - src/driver.rs
Update compiler_builtins
[rust.git] / src / driver.rs
index 9eb9df0eb54fa3c8ee792d0eaa464357d844f8bf..cf3ad422171dfed5d76c8c21087c4a8356ccdc0b 100644 (file)
@@ -364,9 +364,21 @@ fn trans_mono_item<'clif, 'tcx, B: Backend + 'static>(
         MonoItem::Static(def_id) => {
             crate::constant::codegen_static(&mut cx.constants_cx, def_id);
         }
-        MonoItem::GlobalAsm(node_id) => tcx
-            .sess
-            .fatal(&format!("Unimplemented global asm mono item {:?}", node_id)),
+        MonoItem::GlobalAsm(hir_id) => {
+            let item = tcx.hir().expect_item(hir_id);
+            if let rustc_hir::ItemKind::GlobalAsm(rustc_hir::GlobalAsm { asm }) = item.kind {
+                // FIXME implement global asm using an external assembler
+                if asm.as_str().contains("__rust_probestack") {
+                    return;
+                } else {
+                    tcx
+                        .sess
+                        .fatal(&format!("Unimplemented global asm mono item \"{}\"", asm));
+                }
+            } else {
+                bug!("Expected GlobalAsm found {:?}", item);
+            }
+        }
     }
 }