diff --git a/src/userfunc.c b/src/userfunc.c
index 097d4f1..d930951 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1902,7 +1902,7 @@
     char_u	    buffer[200];
     scriptitem_T    *si;
 
-    if (vim_strchr(name, AUTOLOAD_CHAR) != 0)
+    if (vim_strchr(name, AUTOLOAD_CHAR) != NULL)
 	return NULL;	// already has the prefix
     if (!SCRIPT_ID_VALID(sid))
 	return NULL;	// not in a script
@@ -2005,6 +2005,17 @@
 }
 
 /*
+ * Return TRUE if "ufunc" must be called with a g: prefix in Vim9 script.
+ */
+    int
+func_requires_g_prefix(ufunc_T *ufunc)
+{
+    return ufunc->uf_name[0] != K_SPECIAL
+	    && (ufunc->uf_flags & FC_LAMBDA) == 0
+	    && vim_strchr(ufunc->uf_name, AUTOLOAD_CHAR) == NULL;
+}
+
+/*
  * Copy the function name of "fp" to buffer "buf".
  * "buf" must be able to hold the function name plus three bytes.
  * Takes care of script-local function names.
@@ -3442,7 +3453,14 @@
 	     * User defined function.
 	     */
 	    if (fp == NULL)
+	    {
 		fp = find_func(rfname, is_global);
+		if (fp != NULL && !is_global && in_vim9script()
+						 && func_requires_g_prefix(fp))
+		    // In Vim9 script g: is required to find a global
+		    // non-autoload function.
+		    fp = NULL;
+	    }
 
 	    // Trigger FuncUndefined event, may load the function.
 	    if (fp == NULL
@@ -3672,6 +3690,7 @@
     char_u	sid_buf[20];
     int		len;
     int		extra = 0;
+    int		prefix_g = FALSE;
     lval_T	lv;
     int		vim9script;
 
@@ -3837,8 +3856,20 @@
 	// skip over "s:" and "g:"
 	if (lead == 2 || (lv.ll_name[0] == 'g' && lv.ll_name[1] == ':'))
 	{
-	    if (is_global != NULL && lv.ll_name[0] == 'g')
-		*is_global = TRUE;
+	    if (lv.ll_name[0] == 'g')
+	    {
+		if (is_global != NULL)
+		{
+		    *is_global = TRUE;
+		}
+		else
+		{
+		    // dropping "g:" without setting "is_global" won't work in
+		    // Vim9script, put it back later
+		    prefix_g = TRUE;
+		    extra = 2;
+		}
+	    }
 	    lv.ll_name += 2;
 	}
 	len = (int)(end - lv.ll_name);
@@ -3919,6 +3950,11 @@
 	    if (vim9script || lead > 3)	// If it's "<SID>"
 		STRCPY(name + 3, sid_buf);
 	}
+	else if (prefix_g)
+	{
+	    name[0] = 'g';
+	    name[1] = ':';
+	}
 	mch_memmove(name + lead + extra, lv.ll_name, (size_t)len);
 	name[lead + extra + len] = NUL;
     }
