diff --git a/src/channel.c b/src/channel.c
index f40d16a..d5f4ecc 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -577,7 +577,7 @@
 # endif
 
     static void
-channel_gui_register_one(channel_T *channel, ch_part_T part)
+channel_gui_register_one(channel_T *channel, ch_part_T part UNUSED)
 {
     if (!CH_HAS_GUI)
 	return;
@@ -661,7 +661,7 @@
 }
 
     static void
-channel_gui_unregister_one(channel_T *channel, ch_part_T part)
+channel_gui_unregister_one(channel_T *channel UNUSED, ch_part_T part UNUSED)
 {
 # ifdef FEAT_GUI_X11
     if (channel->ch_part[part].ch_inputHandler != (XtInputId)NULL)
@@ -5800,7 +5800,7 @@
     job_T *
 job_start(
 	typval_T    *argvars,
-	char	    **argv_arg,
+	char	    **argv_arg UNUSED,
 	jobopt_T    *opt_arg,
 	int	    is_terminal UNUSED)
 {
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index d67bfac..a4a8756 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7335,7 +7335,7 @@
 
 #if (defined(FEAT_SESSION) || defined(FEAT_EVAL)) || defined(PROTO)
     int
-vim_mkdir_emsg(char_u *name, int prot)
+vim_mkdir_emsg(char_u *name, int prot UNUSED)
 {
     if (vim_mkdir(name, prot) != 0)
     {
diff --git a/src/ex_getln.c b/src/ex_getln.c
index ef9967e..ef8e387 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3754,7 +3754,7 @@
  * Returns the result in allocated memory.
  */
     char_u *
-vim_strsave_fnameescape(char_u *fname, int shell)
+vim_strsave_fnameescape(char_u *fname, int shell UNUSED)
 {
     char_u	*p;
 #ifdef BACKSLASH_IN_FILENAME
diff --git a/src/fileio.c b/src/fileio.c
index 606359a..e0226f8 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2981,7 +2981,7 @@
     int
 check_file_readonly(
     char_u	*fname,		/* full path to file */
-    int		perm)		/* known permissions on file */
+    int		perm UNUSED)	/* known permissions on file */
 {
 #ifndef USE_MCH_ACCESS
     int	    fd = 0;
diff --git a/src/gui_w32.c b/src/gui_w32.c
index c2371f4..61b09e1 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -6720,7 +6720,7 @@
     char_u	*buttons,
     int		 dfltbutton,
     char_u	*textfield,
-    int		ex_cmd)
+    int		ex_cmd UNUSED)
 {
     WORD	*p, *pdlgtemplate, *pnumitems;
     DWORD	*dwp;
@@ -8517,7 +8517,7 @@
 
     BalloonEval *
 gui_mch_create_beval_area(
-    void	*target,	/* ignored, always use s_textArea */
+    void	*target UNUSED,	/* ignored, always use s_textArea */
     char_u	*mesg,
     void	(*mesgCB)(BalloonEval *, int),
     void	*clientData)
diff --git a/src/main.c b/src/main.c
index 5363785..c18fc6f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3658,7 +3658,7 @@
  * Windows doesn't have gettimeofday(), although it does have struct timeval.
  */
     static int
-gettimeofday(struct timeval *tv, char *dummy)
+gettimeofday(struct timeval *tv, char *dummy UNUSED)
 {
     long t = clock();
     tv->tv_sec = t / CLOCKS_PER_SEC;
diff --git a/src/memline.c b/src/memline.c
index 08a99f7..c77d1df 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2101,7 +2101,7 @@
     struct tm *
 vim_localtime(
     const time_t	*timep,		// timestamp for local representation
-    struct tm		*result)	// pointer to caller return buffer
+    struct tm		*result UNUSED)	// pointer to caller return buffer
 {
 #ifdef HAVE_LOCALTIME_R
 # ifdef HAVE_TZSET
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 00b8caa..5fb4809 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -272,7 +272,7 @@
     void
 mch_settitle(
     char_u *title,
-    char_u *icon)
+    char_u *icon UNUSED)
 {
 # ifdef FEAT_GUI_MSWIN
 #  ifdef VIMDLL
@@ -1164,7 +1164,7 @@
 PrintHookProc(
 	HWND hDlg,	// handle to dialog box
 	UINT uiMsg,	// message identifier
-	WPARAM wParam,	// message parameter
+	WPARAM wParam UNUSED,	// message parameter
 	LPARAM lParam	// message parameter
 	)
 {
diff --git a/src/os_win32.c b/src/os_win32.c
index 39b86d6..3ce6057 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -365,7 +365,7 @@
 peek_console_input(
     HANDLE	    hInput,
     INPUT_RECORD    *lpBuffer,
-    DWORD	    nLength,
+    DWORD	    nLength UNUSED,
     LPDWORD	    lpEvents)
 {
     return read_console_input(hInput, lpBuffer, -1, lpEvents);
@@ -1006,7 +1006,7 @@
     WCHAR		*pch,
     WCHAR		*pch2,
     int			*pmodifiers,
-    BOOL		fDoPost)
+    BOOL		fDoPost UNUSED)
 {
     int i;
     const int nModifs = pker->dwControlKeyState & (SHIFT | ALT | CTRL);
@@ -4486,7 +4486,7 @@
 
 #if !defined(FEAT_GUI_MSWIN) || defined(VIMDLL)
     static int
-mch_system_c(char *cmd, int options)
+mch_system_c(char *cmd, int options UNUSED)
 {
     int		ret;
     WCHAR	*wcmd;
@@ -6456,7 +6456,7 @@
  * Check for an "interrupt signal": CTRL-break or CTRL-C.
  */
     void
-mch_breakcheck(int force)
+mch_breakcheck(int force UNUSED)
 {
 #if !defined(FEAT_GUI_MSWIN) || defined(VIMDLL)
 # ifdef VIMDLL
@@ -7218,7 +7218,7 @@
 }
 
     int
-mch_setenv(char *var, char *value, int x)
+mch_setenv(char *var, char *value, int x UNUSED)
 {
     char_u	*envbuf;
     WCHAR	*p;
diff --git a/src/terminal.c b/src/terminal.c
index 3d66bbb..a8b7881 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -957,7 +957,7 @@
  * possible to do "1,5term vim -".
  */
     static ch_part_T
-get_tty_part(term_T *term)
+get_tty_part(term_T *term UNUSED)
 {
 #ifdef UNIX
     ch_part_T	parts[3] = {PART_IN, PART_OUT, PART_ERR};
@@ -5787,7 +5787,7 @@
 conpty_term_and_job_init(
 	term_T	    *term,
 	typval_T    *argvar,
-	char	    **argv,
+	char	    **argv UNUSED,
 	jobopt_T    *opt,
 	jobopt_T    *orig_opt)
 {
@@ -6139,7 +6139,7 @@
 winpty_term_and_job_init(
 	term_T	    *term,
 	typval_T    *argvar,
-	char	    **argv,
+	char	    **argv UNUSED,
 	jobopt_T    *opt,
 	jobopt_T    *orig_opt)
 {
diff --git a/src/ui.c b/src/ui.c
index d3a655c..0170df7 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -649,7 +649,7 @@
  * Return FAIL when not possible.
  */
     int
-ui_get_winpos(int *x, int *y, varnumber_T timeout)
+ui_get_winpos(int *x, int *y, varnumber_T timeout UNUSED)
 {
 # ifdef FEAT_GUI
     if (gui.in_use)
diff --git a/src/undo.c b/src/undo.c
index 732efab..2736f2a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -1784,7 +1784,7 @@
  * "hash[UNDO_HASH_SIZE]" must be the hash value of the buffer text.
  */
     void
-u_read_undo(char_u *name, char_u *hash, char_u *orig_name)
+u_read_undo(char_u *name, char_u *hash, char_u *orig_name UNUSED)
 {
     char_u	*file_name;
     FILE	*fp;
diff --git a/src/version.c b/src/version.c
index 84add98..ab5045c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2064,
+/**/
     2063,
 /**/
     2062,
