diff --git a/src/vim9execute.c b/src/vim9execute.c
index c947d6a..0037f51 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2200,10 +2200,12 @@
 	    case ISN_LOADW:
 	    case ISN_LOADT:
 		{
-		    dictitem_T *di = NULL;
-		    hashtab_T *ht = NULL;
-		    char namespace;
+		    dictitem_T	*di = NULL;
+		    hashtab_T	*ht = NULL;
+		    char	namespace;
 
+		    if (GA_GROW_FAILS(&ectx->ec_stack, 1))
+			goto theend;
 		    switch (iptr->isn_type)
 		    {
 			case ISN_LOADG:
@@ -2227,14 +2229,38 @@
 		    }
 		    di = find_var_in_ht(ht, 0, iptr->isn_arg.string, TRUE);
 
-		    if (di == NULL && ht == get_globvar_ht())
+		    if (di == NULL && ht == get_globvar_ht()
+					    && vim_strchr(iptr->isn_arg.string,
+							AUTOLOAD_CHAR) != NULL)
 		    {
-			// may need to load autoload script
+			// Global variable has an autoload name, may still need
+			// to load the script.
 			if (script_autoload(iptr->isn_arg.string, FALSE))
 			    di = find_var_in_ht(ht, 0,
 						   iptr->isn_arg.string, TRUE);
 			if (did_emsg)
 			    goto on_error;
+			if (di == NULL)
+			{
+			    isn_T   *next = &ectx->ec_instr[ectx->ec_iidx];
+
+			    // When compiling "script.Func()" when "script" is
+			    // an autoload import then this results in
+			    // "LOADG script#Func" because we don't know if it
+			    // is a funcref variable or a function name.  In
+			    // that case a PCALL follows, push the function
+			    // name instead.
+			    if (next->isn_type == ISN_PCALL)
+			    {
+				tv = STACK_TV_BOT(0);
+				tv->v_type = VAR_FUNC;
+				tv->v_lock = 0;
+				tv->vval.v_string =
+					     vim_strsave(iptr->isn_arg.string);
+				++ectx->ec_stack.ga_len;
+				break;
+			    }
+			}
 		    }
 
 		    if (di == NULL)
@@ -2246,8 +2272,6 @@
 		    }
 		    else
 		    {
-			if (GA_GROW_FAILS(&ectx->ec_stack, 1))
-			    goto theend;
 			copy_tv(&di->di_tv, STACK_TV_BOT(0));
 			++ectx->ec_stack.ga_len;
 		    }
