diff --git a/src/gui.h b/src/gui.h
index aecba27..7bcbfa3 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -22,7 +22,10 @@
 #  include "gui_gtk_vms.h"
 # endif // VMS
 # include <X11/Intrinsic.h>
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wstrict-prototypes"
 # include <gtk/gtk.h>
+# pragma GCC diagnostic pop
 #endif
 
 #ifdef FEAT_GUI_HAIKU
diff --git a/src/if_perl.xs b/src/if_perl.xs
index a5b3f28..180fce6 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -338,7 +338,7 @@
  */
 static HANDLE hPerlLib = NULL;
 
-static PerlInterpreter* (*perl_alloc)();
+static PerlInterpreter* (*perl_alloc)(void);
 static void (*perl_construct)(PerlInterpreter*);
 static void (*perl_destruct)(PerlInterpreter*);
 static void (*perl_free)(PerlInterpreter*);
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 4a32124..0620171 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -105,7 +105,7 @@
 # define Py_TYPE_GET_TP_METHODS(type) ((PyMethodDef *)PyType_GetSlot(type, Py_tp_methods))
 
 // PyObject_NEW is not part of stable ABI, but PyObject_Malloc/Init are.
-PyObject* Vim_PyObject_New(PyTypeObject *type, size_t objsize)
+static PyObject* Vim_PyObject_New(PyTypeObject *type, size_t objsize)
 {
     PyObject *obj = (PyObject *)PyObject_Malloc(objsize);
     if (obj == NULL)
@@ -168,7 +168,7 @@
 #  define PyIter_Check(obj) (FALSE)
 # endif
 
-PyTypeObject* AddHeapType(struct typeobject_wrapper* type_object)
+static PyTypeObject* AddHeapType(struct typeobject_wrapper* type_object)
 {
     PyType_Spec type_spec;
     type_spec.name = type_object->tp_name;
@@ -254,7 +254,7 @@
 
 // Limited API does not provide PyRun_* functions. Need to implement manually
 // using PyCompile and PyEval.
-PyObject* Vim_PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
+static PyObject* Vim_PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
 {
     // Just pass "" for filename for now.
     PyObject* compiled = Py_CompileString(str, "", start);
@@ -265,7 +265,7 @@
     Py_DECREF(compiled);
     return eval_result;
 }
-int Vim_PyRun_SimpleString(const char *str)
+static int Vim_PyRun_SimpleString(const char *str)
 {
     // This function emulates CPython's implementation.
     PyObject* m = PyImport_AddModule("__main__");
diff --git a/src/if_python3.c b/src/if_python3.c
index a04cca3..2e11662 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -395,8 +395,8 @@
 static PyObject* (*py3_PyObject_CallFunctionObjArgs)(PyObject *, ...);
 static PyObject* (*py3__PyObject_CallFunction_SizeT)(PyObject *, char *, ...);
 static PyObject* (*py3_PyObject_Call)(PyObject *, PyObject *, PyObject *);
-static PyObject* (*py3_PyEval_GetGlobals)();
-static PyObject* (*py3_PyEval_GetLocals)();
+static PyObject* (*py3_PyEval_GetGlobals)(void);
+static PyObject* (*py3_PyEval_GetLocals)(void);
 static PyObject* (*py3_PyList_GetItem)(PyObject *, Py_ssize_t);
 static PyObject* (*py3_PyImport_ImportModule)(const char *);
 static PyObject* (*py3_PyImport_AddModule)(const char *);
@@ -1061,7 +1061,7 @@
 // An alternative would be to convert all attribute string comparisons to use
 // PyUnicode_CompareWithASCIIString to skip having to extract the chars.
 static char py3_unicode_utf8_chars[20];
-char* PY_UNICODE_GET_UTF8_CHARS(PyObject* str)
+static char* PY_UNICODE_GET_UTF8_CHARS(PyObject* str)
 {
     py3_unicode_utf8_chars[0] = '\0';
     PyObject* bytes = PyUnicode_AsUTF8String(str);
diff --git a/src/if_tcl.c b/src/if_tcl.c
index 9e7cd4c..1882b41 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -180,7 +180,7 @@
  * Declare HANDLE for tcl.dll and function pointers.
  */
 static HANDLE hTclLib = NULL;
-Tcl_Interp* (*dll_Tcl_CreateInterp)();
+Tcl_Interp* (*dll_Tcl_CreateInterp)(void);
 void (*dll_Tcl_FindExecutable)(const void *);
 
 /*
diff --git a/src/option.c b/src/option.c
index 5140c39..d2096a5 100644
--- a/src/option.c
+++ b/src/option.c
@@ -7518,7 +7518,7 @@
  * If 'test_only' is FALSE and 'fuzzy' is TRUE and if 'str' fuzzy matches
  * 'fuzzystr', then stores the match details in fuzmatch[idx] and returns TRUE.
  */
-    int
+    static int
 match_str(
 	char_u		*str,
 	regmatch_T	*regmatch,
@@ -8014,7 +8014,7 @@
 	    // character as individual choice.
 	    for (char_u *flag = option_val; *flag != NUL; flag++)
 	    {
-		char_u *p = vim_strnsave(flag, 1);
+		p = vim_strnsave(flag, 1);
 		if (p == NULL)
 		    break;
 		(*matches)[count++] = p;
diff --git a/src/optionstr.c b/src/optionstr.c
index 010bec7..88532ee 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -733,7 +733,7 @@
 /*
  * Expand an option that accepts a list of string values.
  */
-    int
+    static int
 expand_set_opt_string(
 	optexpand_T *args,
 	char **values,
@@ -819,7 +819,7 @@
 /*
  * Expand an option with a callback that iterates through a list of possible names.
  */
-    int
+    static int
 expand_set_opt_generic(
 	optexpand_T *args,
 	char_u *((*func)(expand_T *, int)),
@@ -850,7 +850,7 @@
 /*
  * Expand an option which is a list of flags.
  */
-    int
+    static int
 expand_set_opt_listflag(
 	optexpand_T *args,
 	char_u *flags,
diff --git a/src/version.c b/src/version.c
index e625ea6..9ae4835 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1960,
+/**/
     1959,
 /**/
     1958,
