diff --git a/src/eval.c b/src/eval.c
index a001bba..4f56463 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6119,10 +6119,10 @@
  */
     static char_u *
 jobchan_tv2string(
-    typval_T	*tv,
-    char_u	**tofree,
-    char_u	*numbuf,
-    int		composite_val)
+    typval_T	*tv UNUSED,
+    char_u	**tofree UNUSED,
+    char_u	*numbuf UNUSED,
+    int		composite_val UNUSED)
 {
     char_u	*r = NULL;
 
diff --git a/src/misc2.c b/src/misc2.c
index c07ed80..b5044fb 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -72,7 +72,7 @@
  * Get the screen position of character col with a coladd in the cursor line.
  */
     int
-getviscol2(colnr_T col, colnr_T coladd UNUSED)
+getviscol2(colnr_T col, colnr_T coladd)
 {
     colnr_T	x;
     pos_T	pos;
diff --git a/src/strings.c b/src/strings.c
index 6b2ff0a..20ca65d 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1037,7 +1037,7 @@
  * Implementation of "byteidx()" and "byteidxcomp()" functions
  */
     static void
-byteidx_common(typval_T *argvars, typval_T *rettv, int comp UNUSED)
+byteidx_common(typval_T *argvars, typval_T *rettv, int comp)
 {
     rettv->vval.v_number = -1;
 
diff --git a/src/terminal.c b/src/terminal.c
index 648fc78..c681f3a 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -6299,7 +6299,7 @@
  * "term_setsize(buf, rows, cols)" function
  */
     void
-f_term_setsize(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
+f_term_setsize(typval_T *argvars, typval_T *rettv UNUSED)
 {
     buf_T	*buf;
     term_T	*term;
diff --git a/src/textprop.c b/src/textprop.c
index 83c42a3..fe0c8d2 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -2060,7 +2060,7 @@
  * prop_type_list([{bufnr}])
  */
     void
-f_prop_type_list(typval_T *argvars, typval_T *rettv UNUSED)
+f_prop_type_list(typval_T *argvars, typval_T *rettv)
 {
     buf_T *buf = NULL;
 
diff --git a/src/typval.c b/src/typval.c
index e50e96a..01ffef5 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -2214,7 +2214,7 @@
 	char_u	    **arg,
 	typval_T    *rettv,
 	int	    evaluate,
-	int	    want_string UNUSED)
+	int	    want_string)
 {
     int		len;
     int		skip_quotes = !in_old_script(4);
diff --git a/src/undo.c b/src/undo.c
index 1cd8912..8c2783a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -3683,7 +3683,7 @@
  * "undofile(name)" function
  */
     void
-f_undofile(typval_T *argvars UNUSED, typval_T *rettv)
+f_undofile(typval_T *argvars, typval_T *rettv)
 {
     if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
@@ -3738,7 +3738,7 @@
  * "undotree(expr)" function
  */
     void
-f_undotree(typval_T *argvars UNUSED, typval_T *rettv)
+f_undotree(typval_T *argvars, typval_T *rettv)
 {
     if (in_vim9script() && check_for_opt_buffer_arg(argvars, 0) == FAIL)
 	return;
diff --git a/src/version.c b/src/version.c
index 398b482..373cd8c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    633,
+/**/
     632,
 /**/
     631,
diff --git a/src/vim9class.c b/src/vim9class.c
index 70f2405..d8813c6 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -2665,7 +2665,7 @@
  * Handle ":type".  Create an alias for a type specification.
  */
     void
-ex_type(exarg_T *eap UNUSED)
+ex_type(exarg_T *eap)
 {
     char_u	*arg = eap->arg;
 
diff --git a/src/vim9cmds.c b/src/vim9cmds.c
index 694bb33..c7fa60a 100644
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -1639,7 +1639,7 @@
  * Compile "catch {expr}".
  */
     char_u *
-compile_catch(char_u *arg, cctx_T *cctx UNUSED)
+compile_catch(char_u *arg, cctx_T *cctx)
 {
     scope_T	*scope = cctx->ctx_scope;
     garray_T	*instr = &cctx->ctx_instr;
@@ -1923,7 +1923,7 @@
  * compile "throw {expr}"
  */
     char_u *
-compile_throw(char_u *arg, cctx_T *cctx UNUSED)
+compile_throw(char_u *arg, cctx_T *cctx)
 {
     char_u *p = skipwhite(arg);
 
diff --git a/src/viminfo.c b/src/viminfo.c
index 540422c..11a2946 100644
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -251,7 +251,7 @@
 viminfo_readstring(
     vir_T	*virp,
     int		off,		    // offset for virp->vir_line
-    int		convert UNUSED)	    // convert the string
+    int		convert)	    // convert the string
 {
     char_u	*retval = NULL;
     char_u	*s, *d;
diff --git a/src/window.c b/src/window.c
index db0bb1b..7ca29d4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1708,7 +1708,7 @@
     int
 make_windows(
     int		count,
-    int		vertical UNUSED)  // split windows vertically if TRUE
+    int		vertical)  // split windows vertically if TRUE
 {
     int		maxcount;
     int		todo;
@@ -3486,7 +3486,7 @@
     win_T *
 winframe_remove(
     win_T	*win,
-    int		*dirp UNUSED,	// set to 'v' or 'h' for direction if 'ea'
+    int		*dirp,		// set to 'v' or 'h' for direction if 'ea'
     tabpage_T	*tp,		// tab page "win" is in, NULL for current
     frame_T	**unflat_altfr)	// if not NULL, set to pointer of frame that got
 				// the space, and it is not flattened
@@ -4855,8 +4855,8 @@
  */
     static int
 leave_tabpage(
-    buf_T	*new_curbuf UNUSED,    // what is going to be the new curbuf,
-				       // NULL if unknown
+    buf_T	*new_curbuf,		// what is going to be the new curbuf,
+					// NULL if unknown
     int		trigger_leave_autocmds)
 {
     tabpage_T	*tp = curtab;
@@ -4908,7 +4908,7 @@
     static void
 enter_tabpage(
     tabpage_T	*tp,
-    buf_T	*old_curbuf UNUSED,
+    buf_T	*old_curbuf,
     int		trigger_enter_autocmds,
     int		trigger_leave_autocmds)
 {
@@ -7855,7 +7855,7 @@
 }
 
     int
-get_tab_number(tabpage_T *tp UNUSED)
+get_tab_number(tabpage_T *tp)
 {
     int		i = 1;
     tabpage_T	*t;
