diff --git a/src/appveyor.bat b/src/appveyor.bat
index 761f9b8..f64a05e 100644
--- a/src/appveyor.bat
+++ b/src/appveyor.bat
@@ -7,7 +7,7 @@
 cd src
 echo "Building MinGW 32bit console version"
 set PATH=c:\msys64\mingw32\bin;%PATH%
-mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
+mingw32-make.exe -f Make_ming.mak GUI=no OPTIMIZE=speed IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
 :: Save vim.exe before Make clean, moved back below.
 copy vim.exe testdir
 mingw32-make.exe -f Make_ming.mak clean
@@ -16,24 +16,24 @@
 :: with specified features without python.
 echo "Building MinGW 32bit GUI version"
 if "%FEATURE%" == "HUGE" (
-    mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1
+    mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed CHANNEL=yes GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35 FEATURES=%FEATURE% || exit 1
 ) ELSE (
-    mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
+    mingw32-make.exe -f Make_ming.mak OPTIMIZE=speed GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
 )
 .\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_ming.txt
 
 echo "Building MSVC 64bit console Version"
 sed -e "s/\$(LINKARGS2)/\$(LINKARGS2) | sed -e 's#.*\\\\r.*##'/" Make_mvc.mak > Make_mvc2.mak
-nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
+nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=no IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
 nmake -f Make_mvc2.mak clean
 
 :: build MSVC huge version with python and channel support
 :: GUI needs to be last, so that testing works
 echo "Building MSVC 64bit GUI Version"
 if "%FEATURE%" == "HUGE" (
-    nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1
+    nmake -f Make_mvc2.mak DIRECTX=yes CPU=AMD64 CHANNEL=yes OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON=C:\Python27-x64 PYTHON3_VER=35 DYNAMIC_PYTHON3=yes PYTHON3=C:\Python35-x64 FEATURES=%FEATURE% || exit 1
 ) ELSE (
-    nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes MBYTE=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
+    nmake -f Make_mvc2.mak CPU=AMD64 OLE=no GUI=yes IME=yes ICONV=yes DEBUG=no FEATURES=%FEATURE% || exit 1
 )
 .\gvim -u NONE -c "redir @a | ver |0put a | wq" ver_msvc.txt
 
diff --git a/src/auto/configure b/src/auto/configure
index 0431add..a3302d2 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -7937,10 +7937,7 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_multibyte" >&5
 $as_echo "$enable_multibyte" >&6; }
-if test "$enable_multibyte" = "yes"; then
-  $as_echo "#define FEAT_MBYTE 1" >>confdefs.h
-
-else
+if test "$enable_multibyte" != "yes"; then
   as_fn_error $? "The multi-byte feature can no longer be disabled. If you have
 		a problem with this, discuss on the Vim mailing list." "$LINENO" 5
 fi
diff --git a/src/config.h.in b/src/config.h.in
index 9a7ba51..e13cc63 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -387,9 +387,6 @@
 /* Define if you want to include the Cscope interface. */
 #undef FEAT_CSCOPE
 
-/* Define if you want to include multibyte support. */
-#undef FEAT_MBYTE
-
 /* Define if you don't want to include right-left support. */
 #undef DISABLE_RIGHTLEFT
 
diff --git a/src/configure.ac b/src/configure.ac
index 2dcfe46..e5525ea 100644
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -2124,9 +2124,7 @@
 	[  --enable-multibyte      Include multibyte editing support.], ,
 	[enable_multibyte="yes"])
 AC_MSG_RESULT($enable_multibyte)
-if test "$enable_multibyte" = "yes"; then
-  AC_DEFINE(FEAT_MBYTE)
-else
+if test "$enable_multibyte" != "yes"; then
   AC_MSG_ERROR([The multi-byte feature can no longer be disabled. If you have
 		a problem with this, discuss on the Vim mailing list.])
 fi
diff --git a/src/crypt_zip.c b/src/crypt_zip.c
index e50fa6b..ed17d95 100644
--- a/src/crypt_zip.c
+++ b/src/crypt_zip.c
@@ -24,11 +24,7 @@
  */
 
 /* Need a type that should be 32 bits. 64 also works but wastes space. */
-# if VIM_SIZEOF_INT >= 4
 typedef unsigned int u32_T;	/* int is at least 32 bits */
-# else
-typedef unsigned long u32_T;	/* long should be 32 bits or more */
-# endif
 
 /* The state of encryption, referenced by cryptstate_T. */
 typedef struct {
diff --git a/src/feature.h b/src/feature.h
index 59fcf78..81b432d 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -286,7 +286,7 @@
  *
  * Disabled for EBCDIC as it requires multibyte.
  */
-#if defined(FEAT_BIG) && !defined(DISABLE_ARABIC) && VIM_SIZEOF_INT >= 4 && !defined(EBCDIC)
+#if defined(FEAT_BIG) && !defined(DISABLE_ARABIC) && !defined(EBCDIC)
 # define FEAT_ARABIC
 #endif
 #ifdef FEAT_ARABIC
@@ -600,21 +600,14 @@
  * +multi_byte		Generic multi-byte character handling.
  *			Now always enabled.
  */
-#if !defined(FEAT_MBYTE)
-# define FEAT_MBYTE
-#endif
-#if VIM_SIZEOF_INT < 4 && !defined(PROTO)
-	Error: Vim only works with 32 bit int or larger
-#endif
 
 /* Define this if you want to use 16 bit Unicode only, reduces memory used for
  * the screen structures. */
 /* #define UNICODE16 */
 
 /*
- * +multi_byte_ime	Win32 IME input method.  Requires +multi_byte.
- *			Only for far-east Windows, so IME can be used to input
- *			chars.  Not tested much!
+ * +multi_byte_ime	Win32 IME input method.  Only for far-east Windows, so
+ *			IME can be used to input chars.  Not tested much!
  */
 #if defined(FEAT_GUI_W32) && !defined(FEAT_MBYTE_IME)
 /* #define FEAT_MBYTE_IME */
diff --git a/src/fileio.c b/src/fileio.c
index aa84e9b..4cb13f2 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1178,10 +1178,9 @@
 	 */
 	if (!skip_read)
 	{
-#if VIM_SIZEOF_INT > 2
-# if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L)
+#if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L)
 		size = SSIZE_MAX;		    /* use max I/O size, 52K */
-# else
+#else
 		/* Use buffer >= 64K.  Add linerest to double the size if the
 		 * line gets very long, to avoid a lot of copying. But don't
 		 * read more than 1 Mbyte at a time, so we can be interrupted.
@@ -1189,20 +1188,11 @@
 		size = 0x10000L + linerest;
 		if (size > 0x100000L)
 		    size = 0x100000L;
-# endif
-#else
-		size = 0x7ff0L - linerest;	    /* limit buffer to 32K */
 #endif
 	}
 
 	/* Protect against the argument of lalloc() going negative. */
-	if (
-#if VIM_SIZEOF_INT <= 2
-	    linerest >= 0x7ff0
-#else
-	    size < 0 || size + linerest + 1 < 0 || linerest >= MAXCOL
-#endif
-	   )
+	if (size < 0 || size + linerest + 1 < 0 || linerest >= MAXCOL)
 	{
 	    ++split;
 	    *ptr = NL;		    /* split line by inserting a NL */
diff --git a/src/message.c b/src/message.c
index c5d48f2..063fada 100644
--- a/src/message.c
+++ b/src/message.c
@@ -4492,14 +4492,10 @@
 		    {
 			/* Don't put the #if inside memchr(), it can be a
 			 * macro. */
-# if VIM_SIZEOF_INT <= 2
-			char *q = memchr(str_arg, '\0', precision);
-# else
 			/* memchr on HP does not like n > 2^31  !!! */
 			char *q = memchr(str_arg, '\0',
 				  precision <= (size_t)0x7fffffffL ? precision
 						       : (size_t)0x7fffffffL);
-# endif
 			str_arg_l = (q == NULL) ? precision
 						      : (size_t)(q - str_arg);
 		    }
diff --git a/src/os_macosx.m b/src/os_macosx.m
index 50ca361..3b5c35a 100644
--- a/src/os_macosx.m
+++ b/src/os_macosx.m
@@ -130,18 +130,14 @@
     char_u *str = (char_u*)[string UTF8String];
     int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
 
-#ifdef FEAT_MBYTE
     if (input_conv.vc_type != CONV_NONE)
 	str = string_convert(&input_conv, str, &len);
-#endif
 
     if (str)
 	clip_yank_selection(motion_type, str, len, cbd);
 
-#ifdef FEAT_MBYTE
     if (input_conv.vc_type != CONV_NONE)
 	vim_free(str);
-#endif
 
 releasepool:
     [pool release];
@@ -169,7 +165,6 @@
 
     /* TODO: Avoid overflow. */
     int len = (int)llen;
-#ifdef FEAT_MBYTE
     if (output_conv.vc_type != CONV_NONE)
     {
 	char_u *conv_str = string_convert(&output_conv, str, &len);
@@ -179,7 +174,6 @@
 	    str = conv_str;
 	}
     }
-#endif
 
     if (len > 0)
     {
diff --git a/src/spell.h b/src/spell.h
index 18c9644..085f18c 100644
--- a/src/spell.h
+++ b/src/spell.h
@@ -38,11 +38,7 @@
 
 /* Type used for indexes in the word tree need to be at least 4 bytes.  If int
  * is 8 bytes we could use something smaller, but what? */
-#if VIM_SIZEOF_INT > 3
 typedef int idx_T;
-#else
-typedef long idx_T;
-#endif
 
 typedef int salfirst_T;
 
diff --git a/src/structs.h b/src/structs.h
index 3216c58..e25ae17 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -416,12 +416,8 @@
 /*
  * structures used in undo.c
  */
-#if VIM_SIZEOF_INT > 2
-# define ALIGN_LONG	/* longword alignment and use filler byte */
-# define ALIGN_SIZE (sizeof(long))
-#else
-# define ALIGN_SIZE (sizeof(short))
-#endif
+#define ALIGN_LONG	/* longword alignment and use filler byte */
+#define ALIGN_SIZE (sizeof(long))
 
 #define ALIGN_MASK (ALIGN_SIZE - 1)
 
@@ -1229,19 +1225,11 @@
 # endif
 #else
 /* Use 32-bit Number. */
-# if VIM_SIZEOF_INT <= 3	/* use long if int is smaller than 32 bits */
-typedef long		    varnumber_T;
-typedef unsigned long	    uvarnumber_T;
-#define VARNUM_MIN	    LONG_MIN
-#define VARNUM_MAX	    LONG_MAX
-#define UVARNUM_MAX	    ULONG_MAX
-# else
 typedef int		    varnumber_T;
 typedef unsigned int	    uvarnumber_T;
 #define VARNUM_MIN	    INT_MIN
 #define VARNUM_MAX	    INT_MAX
 #define UVARNUM_MAX	    UINT_MAX
-# endif
 #endif
 
 typedef double	float_T;
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index a8b43aa..3f49ccb 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -49,13 +49,9 @@
 " This also enables use of line continuation.
 set nocp viminfo+=nviminfo
 
-" Use utf-8 or latin1 by default, instead of whatever the system default
-" happens to be.  Individual tests can overrule this at the top of the file.
-if has('multi_byte')
-  set encoding=utf-8
-else
-  set encoding=latin1
-endif
+" Use utf-8 by default, instead of whatever the system default happens to be.
+" Individual tests can overrule this at the top of the file.
+set encoding=utf-8
 
 " REDIR_TEST_TO_NULL has a very permissive SwapExists autocommand which is for
 " the test_name.vim file itself. Replace it here with a more restrictive one,
diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim
index 648d806..be0bd01 100644
--- a/src/testdir/test_alot_utf8.vim
+++ b/src/testdir/test_alot_utf8.vim
@@ -2,8 +2,7 @@
 " This makes testing go faster, since Vim doesn't need to restart.
 
 " These tests use utf8 'encoding'.  Setting 'encoding' is already done in
-" runtest.vim.  Checking for the multi_byte feature is in the individual
-" files, so that they can be run by themselves.
+" runtest.vim.
 
 source test_charsearch_utf8.vim
 source test_expr_utf8.vim
diff --git a/src/testdir/test_arabic.vim b/src/testdir/test_arabic.vim
index 17e925e..bc31db7 100644
--- a/src/testdir/test_arabic.vim
+++ b/src/testdir/test_arabic.vim
@@ -2,7 +2,7 @@
 " NOTE: This just checks if the code works. If you know Arabic please add
 " functional tests that check the shaping works with real text.
 
-if !has('arabic') || !has('multi_byte')
+if !has('arabic')
   finish
 endif
 
diff --git a/src/testdir/test_charsearch_utf8.vim b/src/testdir/test_charsearch_utf8.vim
index 399ac51..82a807a 100644
--- a/src/testdir/test_charsearch_utf8.vim
+++ b/src/testdir/test_charsearch_utf8.vim
@@ -1,7 +1,4 @@
 " Tests for related f{char} and t{char} using utf-8.
-if !has('multi_byte')
-  finish
-endif
 
 " Test for t,f,F,T movement commands
 func Test_search_cmds()
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 9a4ccd1..4dcda85 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -582,7 +582,7 @@
 endfunc
 
 func Test_cmdline_overstrike()
-  let encodings = has('multi_byte') ? [ 'latin1', 'utf8' ] : [ 'latin1' ]
+  let encodings = ['latin1', 'utf8']
   let encoding_save = &encoding
 
   for e in encodings
@@ -601,11 +601,9 @@
     call assert_equal('"ab0cd3ef4', @:)
   endfor
 
-  if has('multi_byte')
-    " Test overstrike with multi-byte characters.
-    call feedkeys(":\"テキストエディタ\<home>\<right>\<right>ab\<right>\<insert>cd\<enter>", 'xt')
-    call assert_equal('"テabキcdエディタ', @:)
-  endif
+  " Test overstrike with multi-byte characters.
+  call feedkeys(":\"テキストエディタ\<home>\<right>\<right>ab\<right>\<insert>cd\<enter>", 'xt')
+  call assert_equal('"テabキcdエディタ', @:)
 
   let &encoding = encoding_save
 endfunc
diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim
index d5b0a7b..8d56a1a 100644
--- a/src/testdir/test_digraph.vim
+++ b/src/testdir/test_digraph.vim
@@ -1,6 +1,6 @@
 " Tests for digraphs
 
-if !has("digraphs") || !has("multi_byte")
+if !has("digraphs")
   finish
 endif
 
@@ -466,9 +466,6 @@
 endfunc
 
 func Test_show_digraph_cp1251()
-  if !has('multi_byte')
-    return
-  endif
   new
   set encoding=cp1251
   call Put_Dig("='")
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index e0e3e3b..81ffb2c 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -39,7 +39,7 @@
 endfunc
 
 func Test_display_foldtext_mbyte()
-  if !has("folding") || !has("multi_byte")
+  if !has("folding")
     return
   endif
   call NewWindow(10, 40)
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 7b31469..9a60d01 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -37,12 +37,10 @@
   call assert_equal([''], getline(1,'$'))
   %d
   " 4) delete a multibyte character
-  if has("multi_byte")
-    call setline(1, "\u0401")
-    call feedkeys("i\<del>\<esc>", 'tnix')
-    call assert_equal([''], getline(1,'$'))
-    %d
-  endif
+  call setline(1, "\u0401")
+  call feedkeys("i\<del>\<esc>", 'tnix')
+  call assert_equal([''], getline(1,'$'))
+  %d
   " 5.1) delete linebreak with 'bs' option containing eol
   let _bs=&bs
   set bs=eol
@@ -440,7 +438,7 @@
 
 func Test_edit_CTRL_()
   " disabled for Windows builds, why?
-  if !has("multi_byte") || !has("rightleft") || has("win32")
+  if !has("rightleft") || has("win32")
     return
   endif
   let _encoding=&encoding
@@ -608,15 +606,14 @@
   endtry
   call delete('Xdictionary.txt')
 
-  if has("multi_byte")
-    call test_override("char_avail", 1)
-    set showcmd
-    %d
-    call feedkeys("A\<c-k>a:\<esc>", 'tnix')
-    call assert_equal(['ä'], getline(1, '$'))
-    call test_override("char_avail", 0)
-    set noshowcmd
-  endif
+  call test_override("char_avail", 1)
+  set showcmd
+  %d
+  call feedkeys("A\<c-k>a:\<esc>", 'tnix')
+  call assert_equal(['ä'], getline(1, '$'))
+  call test_override("char_avail", 0)
+  set noshowcmd
+
   bw!
 endfunc
 
diff --git a/src/testdir/test_erasebackword.vim b/src/testdir/test_erasebackword.vim
index 098d6ed..9522ec2 100644
--- a/src/testdir/test_erasebackword.vim
+++ b/src/testdir/test_erasebackword.vim
@@ -1,10 +1,5 @@
 
 func Test_erasebackword()
-  if !has('multi_byte')
-    return
-  endif
-
-  set encoding=utf-8
   enew
 
   exe "normal o wwwこんにちわ世界ワールドvim \<C-W>"
@@ -21,5 +16,4 @@
   call assert_equal('', getline('.'))
 
   enew!
-  set encoding&
 endfunc
diff --git a/src/testdir/test_expr_utf8.vim b/src/testdir/test_expr_utf8.vim
index 1737a9f..fad725d 100644
--- a/src/testdir/test_expr_utf8.vim
+++ b/src/testdir/test_expr_utf8.vim
@@ -1,7 +1,4 @@
 " Tests for expressions using utf-8.
-if !has('multi_byte')
-  finish
-endif
 
 func Test_strgetchar()
   call assert_equal(char2nr('á'), strgetchar('áxb', 0))
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index d942d07..3d81048 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -106,11 +106,9 @@
     call assert_equal(4, strwidth(1234))
     call assert_equal(5, strwidth(-1234))
 
-    if has('multi_byte')
-      call assert_equal(2, strwidth('😉'))
-      call assert_equal(17, strwidth('Eĥoŝanĝo ĉiuĵaŭde'))
-      call assert_equal((aw == 'single') ? 6 : 7, strwidth('Straße'))
-    endif
+    call assert_equal(2, strwidth('😉'))
+    call assert_equal(17, strwidth('Eĥoŝanĝo ĉiuĵaŭde'))
+    call assert_equal((aw == 'single') ? 6 : 7, strwidth('Straße'))
 
     call assert_fails('call strwidth({->0})', 'E729:')
     call assert_fails('call strwidth([])', 'E730:')
@@ -277,10 +275,8 @@
   call assert_equal('fg', strpart('abcdefg', 5, 4))
   call assert_equal('defg', strpart('abcdefg', 3))
 
-  if has('multi_byte')
-    call assert_equal('lép', strpart('éléphant', 2, 4))
-    call assert_equal('léphant', strpart('éléphant', 2))
-  endif
+  call assert_equal('lép', strpart('éléphant', 2, 4))
+  call assert_equal('léphant', strpart('éléphant', 2))
 endfunc
 
 func Test_tolower()
@@ -290,10 +286,6 @@
   call assert_equal(' !"#$%&''()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~',
           \ tolower(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'))
 
-  if !has('multi_byte')
-    return
-  endif
-
   " Test with a few uppercase diacritics.
   call assert_equal("aàáâãäåāăąǎǟǡả", tolower("AÀÁÂÃÄÅĀĂĄǍǞǠẢ"))
   call assert_equal("bḃḇ", tolower("BḂḆ"))
@@ -368,10 +360,6 @@
   call assert_equal(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~',
           \ toupper(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'))
 
-  if !has('multi_byte')
-    return
-  endif
-
   " Test with a few lowercase diacritics.
   call assert_equal("AÀÁÂÃÄÅĀĂĄǍǞǠẢ", toupper("aàáâãäåāăąǎǟǡả"))
   call assert_equal("BḂḆ", toupper("bḃḇ"))
diff --git a/src/testdir/test_ga.vim b/src/testdir/test_ga.vim
index 6a7cba2..ea3d211 100644
--- a/src/testdir/test_ga.vim
+++ b/src/testdir/test_ga.vim
@@ -21,10 +21,6 @@
 
   call assert_equal("\n<e>  101,  Hex 65,  Octal 145",   Do_ga('e'))
 
-  if !has('multi_byte')
-    return
-  endif
-
   " Test a few multi-bytes characters.
   call assert_equal("\n<é> 233, Hex 00e9, Oct 351, Digr e'",    Do_ga('é'))
   call assert_equal("\n<ẻ> 7867, Hex 1ebb, Oct 17273, Digr e2", Do_ga('ẻ'))
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index 142aec0..1a8e4c8 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -1,7 +1,3 @@
-if !has('multi_byte')
-  finish
-endif
-
 source view_util.vim
 
 let s:imactivatefunc_called = 0
diff --git a/src/testdir/test_increment_dbcs.vim b/src/testdir/test_increment_dbcs.vim
index dea405c..80b81ac 100644
--- a/src/testdir/test_increment_dbcs.vim
+++ b/src/testdir/test_increment_dbcs.vim
@@ -1,7 +1,4 @@
 " Tests for using Ctrl-A/Ctrl-X using DBCS.
-if !has('multi_byte')
-  finish
-endif
 set encoding=cp932
 scriptencoding cp932
 
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index e0a550c..fb3d992 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -1,10 +1,5 @@
 " Test for JSON functions.
 
-" JSON requires using utf-8, because conversion breaks the asserts.
-if !has('multi_byte')
-  finish
-endif
-
 let s:json1 = '"str\"in\\g"'
 let s:var1 = "str\"in\\g"
 let s:json2 = '"\u0001\u0002\u0003\u0004\u0005\u0006\u0007"'
@@ -79,10 +74,8 @@
   call assert_equal(s:json4, json_encode(s:var4))
   call assert_equal(s:json5, json_encode(s:var5))
 
-  if has('multi_byte')
-    call assert_equal(s:jsonmb, json_encode(s:varmb))
-    " no test for surrogate pair, json_encode() doesn't create them.
-  endif
+  call assert_equal(s:jsonmb, json_encode(s:varmb))
+  " no test for surrogate pair, json_encode() doesn't create them.
 
   call assert_equal(s:jsonnr, json_encode(s:varnr))
   if has('float')
@@ -121,11 +114,9 @@
   call assert_equal(s:var4, json_decode(s:json4))
   call assert_equal(s:var5, json_decode(s:json5))
 
-  if has('multi_byte')
-    call assert_equal(s:varmb, json_decode(s:jsonmb))
-    call assert_equal(s:varsp1, json_decode(s:jsonsp1))
-    call assert_equal(s:varsp2, json_decode(s:jsonsp2))
-  endif
+  call assert_equal(s:varmb, json_decode(s:jsonmb))
+  call assert_equal(s:varsp1, json_decode(s:jsonsp1))
+  call assert_equal(s:varsp2, json_decode(s:jsonsp2))
 
   call assert_equal(s:varnr, json_decode(s:jsonnr))
   if has('float')
@@ -197,10 +188,8 @@
   call assert_equal(s:json4, js_encode(s:var4))
   call assert_equal(s:json5, js_encode(s:var5))
 
-  if has('multi_byte')
-    call assert_equal(s:jsonmb, js_encode(s:varmb))
-    " no test for surrogate pair, js_encode() doesn't create them.
-  endif
+  call assert_equal(s:jsonmb, js_encode(s:varmb))
+  " no test for surrogate pair, js_encode() doesn't create them.
 
   call assert_equal(s:jsonnr, js_encode(s:varnr))
   if has('float')
@@ -237,11 +226,9 @@
   call assert_equal(s:var4, js_decode(s:json4))
   call assert_equal(s:var5, js_decode(s:json5))
 
-  if has('multi_byte')
-    call assert_equal(s:varmb, js_decode(s:jsonmb))
-    call assert_equal(s:varsp1, js_decode(s:jsonsp1))
-    call assert_equal(s:varsp2, js_decode(s:jsonsp2))
-  endif
+  call assert_equal(s:varmb, js_decode(s:jsonmb))
+  call assert_equal(s:varsp1, js_decode(s:jsonsp1))
+  call assert_equal(s:varsp2, js_decode(s:jsonsp2))
 
   call assert_equal(s:varnr, js_decode(s:jsonnr))
   if has('float')
diff --git a/src/testdir/test_makeencoding.vim b/src/testdir/test_makeencoding.vim
index a3d5538..d18b3b6 100644
--- a/src/testdir/test_makeencoding.vim
+++ b/src/testdir/test_makeencoding.vim
@@ -1,7 +1,4 @@
 " Tests for 'makeencoding'.
-if !has('multi_byte')
-  finish
-endif
 
 source shared.vim
 
diff --git a/src/testdir/test_maparg.vim b/src/testdir/test_maparg.vim
index c9e440e..86e046b 100644
--- a/src/testdir/test_maparg.vim
+++ b/src/testdir/test_maparg.vim
@@ -1,8 +1,5 @@
 " Tests for maparg().
 " Also test utf8 map with a 0x80 byte.
-if !has("multi_byte")
-  finish
-endif
 
 function s:SID()     
   return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index 4ac06a1..5aaa743 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1,9 +1,5 @@
 " Tests for mappings and abbreviations
 
-if !has('multi_byte')
-  finish
-endif
-
 func Test_abbreviation()
   " abbreviation with 0x80 should work
   inoreab чкпр   vim
diff --git a/src/testdir/test_marks.vim b/src/testdir/test_marks.vim
index 70c4e83..2fb95a5 100644
--- a/src/testdir/test_marks.vim
+++ b/src/testdir/test_marks.vim
@@ -122,9 +122,6 @@
 endfunc
 
 func Test_marks_cmd_multibyte()
-  if !has('multi_byte')
-    return
-  endif
   new Xone
   call setline(1, [repeat('á', &columns)])
   norm! ma
diff --git a/src/testdir/test_match.vim b/src/testdir/test_match.vim
index 70f0490..94bca9a 100644
--- a/src/testdir/test_match.vim
+++ b/src/testdir/test_match.vim
@@ -114,36 +114,33 @@
   call assert_equal([{'group': 'MyGroup1', 'id': 3, 'priority': 10, 'pos1': [1, 5, 1], 'pos2': [1, 8, 3]}], getmatches())
   call clearmatches()
 
-  "
-  if has('multi_byte')
-    call setline(1, 'abcdΣabcdef')
-    call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]])
-    1
-    redraw!
-    let v1 = screenattr(1, 1)
-    let v4 = screenattr(1, 4)
-    let v5 = screenattr(1, 5)
-    let v6 = screenattr(1, 6)
-    let v7 = screenattr(1, 7)
-    let v8 = screenattr(1, 8)
-    let v9 = screenattr(1, 9)
-    let v10 = screenattr(1, 10)
-    call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}], getmatches())
-    call assert_notequal(v1, v4)
-    call assert_equal(v5, v4)
-    call assert_equal(v6, v1)
-    call assert_equal(v7, v1)
-    call assert_equal(v8, v4)
-    call assert_equal(v9, v4)
-    call assert_equal(v10, v1)
+  call setline(1, 'abcdΣabcdef')
+  call matchaddpos("MyGroup1", [[1, 4, 2], [1, 9, 2]])
+  1
+  redraw!
+  let v1 = screenattr(1, 1)
+  let v4 = screenattr(1, 4)
+  let v5 = screenattr(1, 5)
+  let v6 = screenattr(1, 6)
+  let v7 = screenattr(1, 7)
+  let v8 = screenattr(1, 8)
+  let v9 = screenattr(1, 9)
+  let v10 = screenattr(1, 10)
+  call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1, 9, 2]}], getmatches())
+  call assert_notequal(v1, v4)
+  call assert_equal(v5, v4)
+  call assert_equal(v6, v1)
+  call assert_equal(v7, v1)
+  call assert_equal(v8, v4)
+  call assert_equal(v9, v4)
+  call assert_equal(v10, v1)
 
-    " Check, that setmatches() can correctly restore the matches from matchaddpos()
-    call matchadd('MyGroup1', '\%2lmatchadd')
-    let m=getmatches()
-    call clearmatches()
-    call setmatches(m)
-    call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1,9, 2]}, {'group': 'MyGroup1', 'pattern': '\%2lmatchadd', 'priority': 10, 'id': 12}], getmatches())
-  endif
+  " Check, that setmatches() can correctly restore the matches from matchaddpos()
+  call matchadd('MyGroup1', '\%2lmatchadd')
+  let m=getmatches()
+  call clearmatches()
+  call setmatches(m)
+  call assert_equal([{'group': 'MyGroup1', 'id': 11, 'priority': 10, 'pos1': [1, 4, 2], 'pos2': [1,9, 2]}, {'group': 'MyGroup1', 'pattern': '\%2lmatchadd', 'priority': 10, 'id': 12}], getmatches())
 
   highlight MyGroup1 NONE
   highlight MyGroup2 NONE
diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim
index 68792fb..d280c15 100644
--- a/src/testdir/test_matchadd_conceal_utf8.vim
+++ b/src/testdir/test_matchadd_conceal_utf8.vim
@@ -1,5 +1,5 @@
 " Test for matchadd() and conceal feature using utf-8.
-if !has('conceal') || !has('multi_byte')
+if !has('conceal')
   finish
 endif
 
diff --git a/src/testdir/test_mksession_utf8.vim b/src/testdir/test_mksession_utf8.vim
index 8ffbba2..67af3a9 100644
--- a/src/testdir/test_mksession_utf8.vim
+++ b/src/testdir/test_mksession_utf8.vim
@@ -3,7 +3,7 @@
 set encoding=utf-8
 scriptencoding utf-8
 
-if !has('multi_byte') || !has('mksession')
+if !has('mksession')
   finish
 endif
 
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index aac75da..1224a3f 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -1368,10 +1368,6 @@
 endfunc
 
 func Test_normal24_rot13()
-  " This test uses multi byte characters
-  if !has("multi_byte")
-    return
-  endif
   " Testing for g?? g?g?
   new
   call append(0, 'abcdefghijklmnopqrstuvwxyzäüö')
@@ -1621,10 +1617,6 @@
 endfunc
 
 fun! Test_normal30_changecase()
-  " This test uses multi byte characters
-  if !has("multi_byte")
-    return
-  endif
   new
   call append(0, 'This is a simple test: äüöß')
   norm! 1ggVu
@@ -1894,42 +1886,36 @@
   call assert_equal("\nCol 1 of 10; Line 1 of 2; Word 1 of 4; Char 1 of 23; Byte 1 of 22", a)
   set bin & eol&
 
-  if has('multi_byte')
-    call setline(1, ['Français', '日本語'])
+  call setline(1, ['Français', '日本語'])
 
-    let a = execute(":norm! \<Esc>gojlg\<c-g>")
-    call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20", a)
+  let a = execute(":norm! \<Esc>gojlg\<c-g>")
+  call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20", a)
 
-    let a = execute(":norm! \<Esc>gojvlg\<c-g>")
-    call assert_equal("\nSelected 1 of 2 Lines; 1 of 2 Words; 2 of 13 Chars; 6 of 20 Bytes", a)
+  let a = execute(":norm! \<Esc>gojvlg\<c-g>")
+  call assert_equal("\nSelected 1 of 2 Lines; 1 of 2 Words; 2 of 13 Chars; 6 of 20 Bytes", a)
 
-    let a = execute(":norm! \<Esc>goll\<c-v>jlg\<c-g>")
-    call assert_equal("\nSelected 4 Cols; 2 of 2 Lines; 2 of 2 Words; 6 of 13 Chars; 11 of 20 Bytes", a)
+  let a = execute(":norm! \<Esc>goll\<c-v>jlg\<c-g>")
+  call assert_equal("\nSelected 4 Cols; 2 of 2 Lines; 2 of 2 Words; 6 of 13 Chars; 11 of 20 Bytes", a)
 
-    set fenc=utf8 bomb
-    let a = execute(":norm! \<Esc>gojlg\<c-g>")
-    call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+3 for BOM)", a)
+  set fenc=utf8 bomb
+  let a = execute(":norm! \<Esc>gojlg\<c-g>")
+  call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+3 for BOM)", a)
 
-    set fenc=utf16 bomb
-    let a = execute(":norm! g\<c-g>")
-    call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+2 for BOM)", a)
+  set fenc=utf16 bomb
+  let a = execute(":norm! g\<c-g>")
+  call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+2 for BOM)", a)
 
-    set fenc=utf32 bomb
-    let a = execute(":norm! g\<c-g>")
-    call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+4 for BOM)", a)
+  set fenc=utf32 bomb
+  let a = execute(":norm! g\<c-g>")
+  call assert_equal("\nCol 4-3 of 9-6; Line 2 of 2; Word 2 of 2; Char 11 of 13; Byte 16 of 20(+4 for BOM)", a)
 
-    set fenc& bomb&
-  endif
+  set fenc& bomb&
 
   set ff&
   bwipe!
 endfunc
 
 fun! Test_normal34_g_cmd3()
-  if !has("multi_byte")
-    return
-  endif
-
   " Test for g8
   new
   let a=execute(':norm! 1G0g8')
@@ -1948,9 +1934,6 @@
 endfunc
 
 func Test_normal_8g8()
-  if !has("multi_byte")
-    return
-  endif
   new
 
   " Test 8g8 which finds invalid utf8 at or after the cursor.
@@ -2290,11 +2273,6 @@
 endfunc
 
 func Test_normal46_ignore()
-  " This test uses multi byte characters
-  if !has("multi_byte")
-    return
-  endif
-
   new
   " How to test this?
   " let's just for now test, that the buffer
@@ -2470,9 +2448,7 @@
   call assert_equal(['abcdefghijklmn'], getline(1,'$'))
   exe "norm! df\<c-\>m"
   call assert_equal(['abcdefghijklmn'], getline(1,'$'))
-  if !has("multi_byte")
-    return
-  endif
+
   call setline(2, 'abcdefghijklmnāf')
   norm! 2gg0
   exe "norm! df\<Char-0x101>"
@@ -2494,9 +2470,6 @@
 endfunc
 
 func Test_delete_until_paragraph()
-  if !has('multi_byte')
-    return
-  endif
   new
   normal grádv}
   call assert_equal('á', getline(1))
diff --git a/src/testdir/test_plus_arg_edit.vim b/src/testdir/test_plus_arg_edit.vim
index e91a6e4..e31680e 100644
--- a/src/testdir/test_plus_arg_edit.vim
+++ b/src/testdir/test_plus_arg_edit.vim
@@ -10,10 +10,6 @@
 endfunction
 
 func Test_edit_bad()
-  if !has('multi_byte')
-    finish
-  endif
-
   " Test loading a utf8 file with bad utf8 sequences.
   call writefile(["[\xff][\xc0][\xe2\x89\xf0][\xc2\xc2]"], "Xfile")
   new
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim
index 1d49523..d6e9c03 100644
--- a/src/testdir/test_profile.vim
+++ b/src/testdir/test_profile.vim
@@ -407,7 +407,7 @@
 endfunc
 
 func Test_profile_truncate_mbyte()
-  if !has('multi_byte') || &enc !=# 'utf-8'
+  if &enc !=# 'utf-8'
     return
   endif
 
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
index 61b7429..2a9e8a3 100644
--- a/src/testdir/test_put.vim
+++ b/src/testdir/test_put.vim
@@ -1,9 +1,6 @@
 " Tests for put commands, e.g. ":put", "p", "gp", "P", "gP", etc.
 
 func Test_put_block()
-  if !has('multi_byte')
-    return
-  endif
   new
   call feedkeys("i\<C-V>u2500\<CR>x\<ESC>", 'x')
   call feedkeys("\<C-V>y", 'x')
diff --git a/src/testdir/test_regex_char_classes.vim b/src/testdir/test_regex_char_classes.vim
index 7873502..c1a4202 100644
--- a/src/testdir/test_regex_char_classes.vim
+++ b/src/testdir/test_regex_char_classes.vim
@@ -1,9 +1,6 @@
 " Tests for regexp with backslash and other special characters inside []
 " Also test backslash for hex/octal numbered character.
 "
-if !has('multi_byte')
-  finish
-endif
 
 scriptencoding utf-8
 
diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim
index bec5e0e..f618870 100644
--- a/src/testdir/test_regexp_utf8.vim
+++ b/src/testdir/test_regexp_utf8.vim
@@ -1,7 +1,4 @@
 " Tests for regexp in utf8 encoding
-if !has('multi_byte')
-  finish
-endif
 
 func s:equivalence_test()
   let str = "AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňŉṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ"
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index 86df794..0dfea49 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -1127,9 +1127,6 @@
 
 " Test for search('multi-byte char', 'bce')
 func Test_search_multibyte()
-  if !has('multi_byte')
-    return
-  endif
   let save_enc = &encoding
   set encoding=utf8
   enew!
@@ -1178,7 +1175,7 @@
     " ' ̇' U+0307 Dec:775 COMBINING DOT ABOVE &#x307; /\%u307\Z "\u0307"
     " ' ̣' U+0323 Dec:803 COMBINING DOT BELOW &#x323; /\%u323 "\u0323" 
   " Those should also appear on the commandline
-  if !has('multi_byte') || !exists('+incsearch')
+  if !exists('+incsearch')
     return
   endif
   call Cmdline3_prep()
diff --git a/src/testdir/test_source_utf8.vim b/src/testdir/test_source_utf8.vim
index c29c2ec..e93ea29 100644
--- a/src/testdir/test_source_utf8.vim
+++ b/src/testdir/test_source_utf8.vim
@@ -1,7 +1,4 @@
 " Test the :source! command
-if !has('multi_byte')
-  finish
-endif
 
 func Test_source_utf8()
   " check that sourcing a script with 0x80 as second byte works
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 1230c20..76ad12e 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -135,10 +135,8 @@
   set enc=cp1250 spell spelllang=en
   call assert_match("^\nfile: .*/runtime/spell/en.ascii.spl\n$", execute('spellinfo'))
 
-  if has('multi_byte')
-    set enc=utf-8 spell spelllang=en
-    call assert_match("^\nfile: .*/runtime/spell/en.utf-8.spl\n$", execute('spellinfo'))
-  endif
+  set enc=utf-8 spell spelllang=en
+  call assert_match("^\nfile: .*/runtime/spell/en.utf-8.spl\n$", execute('spellinfo'))
 
   set enc=latin1 spell spelllang=en_us,en_nz
   call assert_match("^\n" .
diff --git a/src/testdir/test_startup_utf8.vim b/src/testdir/test_startup_utf8.vim
index ef1a997..8b3eca1 100644
--- a/src/testdir/test_startup_utf8.vim
+++ b/src/testdir/test_startup_utf8.vim
@@ -1,7 +1,4 @@
 " Tests for startup using utf-8.
-if !has('multi_byte')
-  finish
-endif
 
 source shared.vim
 source screendump.vim
diff --git a/src/testdir/test_termencoding.vim b/src/testdir/test_termencoding.vim
index 6192dcf..f4f5c5a 100644
--- a/src/testdir/test_termencoding.vim
+++ b/src/testdir/test_termencoding.vim
@@ -2,7 +2,7 @@
 " setting 'termencoding' to make it work.
 
 " This only works with "iconv".
-if !has('multi_byte') || !has('iconv')
+if !has('iconv')
   finish
 endif
 
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 821154a..25ec2b5 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -209,9 +209,6 @@
 endfunc
 
 func Test_terminal_scrape_multibyte()
-  if !has('multi_byte')
-    return
-  endif
   call writefile(["léttまrs"], 'Xtext')
   if has('win32')
     " Run cmd with UTF-8 codepage to make the type command print the expected
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
index 699df62..8a71f50 100644
--- a/src/testdir/test_utf8.vim
+++ b/src/testdir/test_utf8.vim
@@ -1,7 +1,4 @@
 " Tests for Unicode manipulations
-if !has('multi_byte')
-  finish
-endif
  
 
 " Visual block Insert adjusts for multi-byte char
diff --git a/src/testdir/test_utf8_comparisons.vim b/src/testdir/test_utf8_comparisons.vim
index a22cbb2..312925b 100644
--- a/src/testdir/test_utf8_comparisons.vim
+++ b/src/testdir/test_utf8_comparisons.vim
@@ -1,10 +1,6 @@
 " Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
 " Also test "g~ap".
 
-if !has("multi_byte")
-  finish
-endif
-
 func Ch(a, op, b, expected)
   call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected,
         \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim
index 300f3a6..cea78e5 100644
--- a/src/testdir/test_viminfo.vim
+++ b/src/testdir/test_viminfo.vim
@@ -391,9 +391,6 @@
 endfunc
 
 func Test_viminfo_encoding()
-  if !has('multi_byte')
-    return
-  endif
   set enc=latin1
   call histdel(':')
   call histadd(':', "echo '\xe9'")
diff --git a/src/testdir/test_virtualedit.vim b/src/testdir/test_virtualedit.vim
index abe79f6..67adede 100644
--- a/src/testdir/test_virtualedit.vim
+++ b/src/testdir/test_virtualedit.vim
@@ -48,11 +48,9 @@
   call setline(1, range(20))
   exe "normal! gg2jv10lr-"
   call assert_equal(["1", "-----------", "3"], getline(2,4))
-  if has('multi_byte')
-    call setline(1, range(20))
-    exe "normal! gg2jv10lr\<c-k>hh"
-    call assert_equal(["1", "───────────", "3"], getline(2,4))
-  endif
+  call setline(1, range(20))
+  exe "normal! gg2jv10lr\<c-k>hh"
+  call assert_equal(["1", "───────────", "3"], getline(2,4))
 
   bwipe!
   set virtualedit=
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 6443182..77064ba 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -6,9 +6,6 @@
 
 func Test_block_shift_multibyte()
   " Uses double-wide character.
-  if !has('multi_byte')
-    return
-  endif
   split
   call setline(1, ['xヹxxx', 'ヹxxx'])
   exe "normal 1G0l\<C-V>jl>"
diff --git a/src/testdir/test_wordcount.vim b/src/testdir/test_wordcount.vim
index 75c4e4b..6a3d410 100644
--- a/src/testdir/test_wordcount.vim
+++ b/src/testdir/test_wordcount.vim
@@ -1,9 +1,5 @@
 " Test for wordcount() function
 
-if !has('multi_byte')
-  finish
-endif
-
 func Test_wordcount()
   let save_enc = &enc
   set encoding=utf-8
diff --git a/src/testdir/test_writefile.vim b/src/testdir/test_writefile.vim
index d1f6346..2e47b48 100644
--- a/src/testdir/test_writefile.vim
+++ b/src/testdir/test_writefile.vim
@@ -33,7 +33,7 @@
 endfunc
 
 func Test_writefile_fails_conversion()
-  if !has('multi_byte') || !has('iconv') || system('uname -s') =~ 'SunOS'
+  if !has('iconv') || system('uname -s') =~ 'SunOS'
     return
   endif
   set nobackup nowritebackup
diff --git a/src/version.c b/src/version.c
index 7898c1a..c472ece 100644
--- a/src/version.c
+++ b/src/version.c
@@ -788,6 +788,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    811,
+/**/
     810,
 /**/
     809,
diff --git a/src/vim.h b/src/vim.h
index 37e9d5b..3febc62 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -157,6 +157,10 @@
 #  define VIM_SIZEOF_INT __SIZEOF_INT__
 #endif
 
+#if VIM_SIZEOF_INT < 4 && !defined(PROTO)
+    Error: Vim only works with 32 bit int or larger
+#endif
+
 /*
  * #defines for optionals and features
  * Also defines FEAT_TINY, FEAT_SMALL, etc. when FEAT_HUGE is defined.
@@ -1664,8 +1668,6 @@
 typedef int	colnr_T;		/* column number type */
 typedef unsigned short disptick_T;	/* display tick type */
 
-#define MAXLNUM (0x7fffffffL)		/* maximum (invalid) line number */
-
 /*
  * Well, you won't believe it, but some S/390 machines ("host", now also known
  * as zServer) use 31 bit pointers. There are also some newer machines, that
@@ -1675,14 +1677,12 @@
  * With this we restrict the maximum line length to 1073741823. I guess this is
  * not a real problem. BTW:  Longer lines are split.
  */
-#if VIM_SIZEOF_INT >= 4
-# ifdef __MVS__
-#  define MAXCOL (0x3fffffffL)		/* maximum column number, 30 bits */
-# else
-#  define MAXCOL (0x7fffffffL)		/* maximum column number, 31 bits */
-# endif
+#ifdef __MVS__
+# define MAXCOL (0x3fffffffL)		/* maximum column number, 30 bits */
+# define MAXLNUM (0x3fffffffL)		/* maximum (invalid) line number */
 #else
-# define MAXCOL	(0x7fff)		/* maximum column number, 15 bits */
+# define MAXCOL (0x7fffffffL)		/* maximum column number, 31 bits */
+# define MAXLNUM (0x7fffffffL)		/* maximum (invalid) line number */
 #endif
 
 #define SHOWCMD_COLS 10			/* columns needed by shown command */
