diff --git a/bridge/go-llvm-tree-integrity.cpp b/bridge/go-llvm-tree-integrity.cpp
index 1bb6515..d18619a 100644
--- a/bridge/go-llvm-tree-integrity.cpp
+++ b/bridge/go-llvm-tree-integrity.cpp
@@ -217,7 +217,7 @@
     if (e->flavor() == N_Call) {
       // ok to duplicate runtime error calls, but not other calls
       Bfunction *target = e->getCallTarget();
-      if (!target || target->name() != "__go_runtime_error")
+      if (!target || target->name().compare(0, 13, "runtime.panic") != 0)
         return false;
     }
     if (e->flavor() == N_BinaryOp &&
diff --git a/bridge/go-llvm.cpp b/bridge/go-llvm.cpp
index df92d6c..c634909 100644
--- a/bridge/go-llvm.cpp
+++ b/bridge/go-llvm.cpp
@@ -3216,7 +3216,7 @@
       // Mark nil checks "make_implicit". GoNilChecks pass will
       // try to elide the branch.
       if (llvm::Function *fn = llvm::cast<llvm::CallBase>(inst)->getCalledFunction())
-        if (fn->getName() == "__go_runtime_error")
+        if (fn->getName() == "runtime.panicmem")
           if (llvm::BasicBlock *pred = inst->getParent()->getSinglePredecessor()) {
             llvm::Instruction *br = pred->getTerminator();
             br->setMetadata(llvm::LLVMContext::MD_make_implicit,
diff --git a/libgo/CMakeLists.txt b/libgo/CMakeLists.txt
index 8d0265a..7ba6e3d 100644
--- a/libgo/CMakeLists.txt
+++ b/libgo/CMakeLists.txt
@@ -417,7 +417,6 @@
   "runtime/go-now.c"
   "runtime/go-nosys.c"
   "runtime/go-reflect-call.c"
-  "runtime/go-runtime-error.c"
   "runtime/go-setenv.c"
   "runtime/go-signal.c"
   "runtime/go-unsafe-pointer.c"
diff --git a/passes/GoNilChecks.cpp b/passes/GoNilChecks.cpp
index 753db33..19e08b8 100644
--- a/passes/GoNilChecks.cpp
+++ b/passes/GoNilChecks.cpp
@@ -675,7 +675,7 @@
   //   load/store // handler: faultBB
   //   ...
   // faultBB:
-  //   invoke __go_runtime_error(...) unwind label padBB
+  //   invoke runtime.panicmem() unwind label padBB
   // padBB:
   //   exception handler
   //
@@ -717,7 +717,7 @@
     // call).
     for (MachineInstr &MI : *FaultBB)
       if (MI.isCall() && MI.getOperand(0).isGlobal() &&
-          MI.getOperand(0).getGlobal()->getName() == "__go_runtime_error") {
+          MI.getOperand(0).getGlobal()->getName() == "runtime.panicmem") {
         MI.eraseFromParent();
         break;
       }
diff --git a/unittests/BackendCore/BackendTreeIntegrity.cpp b/unittests/BackendCore/BackendTreeIntegrity.cpp
index 35e931b..06b9e62 100644
--- a/unittests/BackendCore/BackendTreeIntegrity.cpp
+++ b/unittests/BackendCore/BackendTreeIntegrity.cpp
@@ -181,22 +181,19 @@
   EXPECT_FALSE(ivis.repairableSubTree(call2));
 
   // Create runtime error function.
-  const char *rtename = "__go_runtime_error";
-  BFunctionType *bfterr = mkFuncTyp(be,
-                                    L_PARM, bi32t,
-                                    L_END);
+  const char *rtename = "runtime.panicmem";
+  BFunctionType *bfterr = mkFuncTyp(be, L_END);
   unsigned fflags = (Backend::function_is_visible |
                      Backend::function_is_inlinable |
                      Backend::function_does_not_return |
                      Backend::function_is_declaration);
   Bfunction *rtefcn = be->function(bfterr, rtename, rtename, fflags, loc);
 
-  // p0 != nil ? *p0 + 3 : runtime_error(6)
+  // p0 != nil ? *p0 + 3 : runtime.panicmem()
   Bexpression *cmp2 = be->binary_expression(OPERATOR_NOTEQ, vex3, npe, loc);
   Bexpression *der3 = be->indirect_expression(bi32t, vex3, false, loc);
   Bexpression *add2 = be->binary_expression(OPERATOR_PLUS, mkInt32Const(be, 3), der3, loc);
-  Bexpression *const6 = mkInt32Const(be, 6);
-  Bexpression *call3 = h.mkCallExpr(be, rtefcn, const6, nullptr);
+  Bexpression *call3 = h.mkCallExpr(be, rtefcn, nullptr);
   Bexpression *condex2 = be->conditional_expression(func, bi32t, cmp2, add2,
                                                    call3, loc);
 
