diff --git a/share/libc/inttypes.h b/share/libc/inttypes.h
index 1d685c0780b45fdeae13cb8d5af1619ecd911f08..1c64e01cff56a4abce9c0cfd9a8a7389113037a2 100644
--- a/share/libc/inttypes.h
+++ b/share/libc/inttypes.h
@@ -39,15 +39,15 @@ __PUSH_FC_STDLIB
 # define PRId32		__PRI32_PREFIX "d"
 # define PRId64		__PRI64_PREFIX "d"
 
-# define PRIdLEAST8	__PRI8_PREFIX "d"
-# define PRIdLEAST16	__PRI16_PREFIX "d"
-# define PRIdLEAST32	__PRI32_PREFIX "d"
-# define PRIdLEAST64	__PRI64_PREFIX "d"
+# define PRIdLEAST8	__PRI_LEAST8_PREFIX "d"
+# define PRIdLEAST16	__PRI_LEAST16_PREFIX "d"
+# define PRIdLEAST32	__PRI_LEAST32_PREFIX "d"
+# define PRIdLEAST64	__PRI_LEAST64_PREFIX "d"
 
-# define PRIdFAST8	__PRI8_PREFIX "d"
-# define PRIdFAST16	__PRIFAST16_PREFIX "d"
-# define PRIdFAST32	__PRI32_PREFIX "d"
-# define PRIdFAST64	__PRI64_PREFIX "d"
+# define PRIdFAST8	__PRI_FAST8_PREFIX "d"
+# define PRIdFAST16	__PRI_FAST16_PREFIX "d"
+# define PRIdFAST32	__PRI_FAST32_PREFIX "d"
+# define PRIdFAST64	__PRI_FAST64_PREFIX "d"
 
 
 # define PRIi8		__PRI8_PREFIX "i"
@@ -55,15 +55,15 @@ __PUSH_FC_STDLIB
 # define PRIi32		__PRI32_PREFIX "i"
 # define PRIi64		__PRI64_PREFIX "i"
 
-# define PRIiLEAST8	__PRI8_PREFIX "i"
-# define PRIiLEAST16	__PRI16_PREFIX "i"
-# define PRIiLEAST32	__PRI32_PREFIX "i"
-# define PRIiLEAST64	__PRI64_PREFIX "i"
+# define PRIiLEAST8	__PRI_LEAST8_PREFIX "i"
+# define PRIiLEAST16	__PRI_LEAST16_PREFIX "i"
+# define PRIiLEAST32	__PRI_LEAST32_PREFIX "i"
+# define PRIiLEAST64	__PRI_LEAST64_PREFIX "i"
 
-# define PRIiFAST8	__PRI8_PREFIX "i"
-# define PRIiFAST16	__PRIFAST16_PREFIX "i"
-# define PRIiFAST32	__PRI32_PREFIX "i"
-# define PRIiFAST64	__PRI64_PREFIX "i"
+# define PRIiFAST8	__PRI_FAST8_PREFIX "i"
+# define PRIiFAST16	__PRI_FAST16_PREFIX "i"
+# define PRIiFAST32	__PRI_FAST32_PREFIX "i"
+# define PRIiFAST64	__PRI_FAST64_PREFIX "i"
 
 /* Octal notation.  */
 # define PRIo8		__PRI8_PREFIX "o"
@@ -71,15 +71,15 @@ __PUSH_FC_STDLIB
 # define PRIo32		__PRI32_PREFIX "o"
 # define PRIo64		__PRI64_PREFIX "o"
 
-# define PRIoLEAST8	__PRI8_PREFIX "o"
-# define PRIoLEAST16	__PRI16_PREFIX "o"
-# define PRIoLEAST32	__PRI32_PREFIX "o"
-# define PRIoLEAST64	__PRI64_PREFIX "o"
+# define PRIoLEAST8	__PRI_LEAST8_PREFIX "o"
+# define PRIoLEAST16	__PRI_LEAST16_PREFIX "o"
+# define PRIoLEAST32	__PRI_LEAST32_PREFIX "o"
+# define PRIoLEAST64	__PRI_LEAST64_PREFIX "o"
 
-# define PRIoFAST8	__PRI8_PREFIX "o"
-# define PRIoFAST16	__PRIFAST16_PREFIX "o"
-# define PRIoFAST32	__PRI32_PREFIX "o"
- # define PRIoFAST64	__PRI64_PREFIX "o"
+# define PRIoFAST8	__PRI_FAST8_PREFIX "o"
+# define PRIoFAST16	__PRI_FAST16_PREFIX "o"
+# define PRIoFAST32	__PRI_FAST32_PREFIX "o"
+ # define PRIoFAST64	__PRI_FAST64_PREFIX "o"
 
 /* Unsigned integers.  */
 # define PRIu8		__PRI8_PREFIX "u"
@@ -87,15 +87,15 @@ __PUSH_FC_STDLIB
 # define PRIu32		__PRI32_PREFIX "u"
 # define PRIu64		__PRI64_PREFIX "u"
 
-# define PRIuLEAST8	__PRI8_PREFIX "u"
-# define PRIuLEAST16	__PRI16_PREFIX "u"
-# define PRIuLEAST32	__PRI32_PREFIX "u"
-# define PRIuLEAST64	__PRI64_PREFIX "u"
+# define PRIuLEAST8	__PRI_LEAST8_PREFIX "u"
+# define PRIuLEAST16	__PRI_LEAST16_PREFIX "u"
+# define PRIuLEAST32	__PRI_LEAST32_PREFIX "u"
+# define PRIuLEAST64	__PRI_LEAST64_PREFIX "u"
 
-# define PRIuFAST8	__PRI8_PREFIX "u"
-# define PRIuFAST16	__PRIFAST16_PREFIX "u"
-# define PRIuFAST32	__PRI32_PREFIX "u"
-# define PRIuFAST64	__PRI64_PREFIX "u"
+# define PRIuFAST8	__PRI_FAST8_PREFIX "u"
+# define PRIuFAST16	__PRI_FAST16_PREFIX "u"
+# define PRIuFAST32	__PRI_FAST32_PREFIX "u"
+# define PRIuFAST64	__PRI_FAST64_PREFIX "u"
 
 /* lowercase hexadecimal notation.  */
 # define PRIx8		__PRI8_PREFIX "x"
@@ -103,15 +103,15 @@ __PUSH_FC_STDLIB
 # define PRIx32		__PRI32_PREFIX "x"
 # define PRIx64		__PRI64_PREFIX "x"
 
-# define PRIxLEAST8	__PRI8_PREFIX "x"
-# define PRIxLEAST16	__PRI16_PREFIX "x"
-# define PRIxLEAST32	__PRI32_PREFIX "x"
-# define PRIxLEAST64	__PRI64_PREFIX "x"
+# define PRIxLEAST8	__PRI_LEAST8_PREFIX "x"
+# define PRIxLEAST16	__PRI_LEAST16_PREFIX "x"
+# define PRIxLEAST32	__PRI_LEAST32_PREFIX "x"
+# define PRIxLEAST64	__PRI_LEAST64_PREFIX "x"
 
-# define PRIxFAST8	__PRI8_PREFIX "x"
-# define PRIxFAST16	__PRIFAST16_PREFIX "x"
-# define PRIxFAST32	__PRI32_PREFIX "x"
-# define PRIxFAST64	__PRI64_PREFIX "x"
+# define PRIxFAST8	__PRI_FAST8_PREFIX "x"
+# define PRIxFAST16	__PRI_FAST16_PREFIX "x"
+# define PRIxFAST32	__PRI_FAST32_PREFIX "x"
+# define PRIxFAST64	__PRI_FAST64_PREFIX "x"
 
 /* UPPERCASE hexadecimal notation.  */
 # define PRIX8		__PRI8_PREFIX "X"
@@ -119,15 +119,15 @@ __PUSH_FC_STDLIB
 # define PRIX32		__PRI32_PREFIX "X"
 # define PRIX64		__PRI64_PREFIX "X"
 
-# define PRIXLEAST8	__PRI8_PREFIX "X"
-# define PRIXLEAST16	__PRI16_PREFIX "X"
-# define PRIXLEAST32	__PRI32_PREFIX "X"
-# define PRIXLEAST64	__PRI64_PREFIX "X"
+# define PRIXLEAST8	__PRI_LEAST8_PREFIX "X"
+# define PRIXLEAST16	__PRI_LEAST16_PREFIX "X"
+# define PRIXLEAST32	__PRI_LEAST32_PREFIX "X"
+# define PRIXLEAST64	__PRI_LEAST64_PREFIX "X"
 
-# define PRIXFAST8	__PRI8_PREFIX "X"
-# define PRIXFAST16	__PRIFAST16_PREFIX "X"
-# define PRIXFAST32	__PRI32_PREFIX "X"
-# define PRIXFAST64	__PRI64_PREFIX "X"
+# define PRIXFAST8	__PRI_FAST8_PREFIX "X"
+# define PRIXFAST16	__PRI_FAST16_PREFIX "X"
+# define PRIXFAST32	__PRI_FAST32_PREFIX "X"
+# define PRIXFAST64	__PRI_FAST64_PREFIX "X"
 
 
 /* Macros for printing `intmax_t' and `uintmax_t'.  */
@@ -155,15 +155,15 @@ __PUSH_FC_STDLIB
 # define SCNd32		__PRI32_PREFIX "d"
 # define SCNd64		__PRI64_PREFIX "d"
 
-# define SCNdLEAST8	__PRI8_PREFIX "d"
-# define SCNdLEAST16	__PRI16_PREFIX "d"
-# define SCNdLEAST32	__PRI32_PREFIX "d"
-# define SCNdLEAST64	__PRI64_PREFIX "d"
+# define SCNdLEAST8	__PRI_LEAST8_PREFIX "d"
+# define SCNdLEAST16	__PRI_LEAST16_PREFIX "d"
+# define SCNdLEAST32	__PRI_LEAST32_PREFIX "d"
+# define SCNdLEAST64	__PRI_LEAST64_PREFIX "d"
 
-# define SCNdFAST8	__PRI8_PREFIX "d"
-# define SCNdFAST16	__PRIFAST16_PREFIX "d"
-# define SCNdFAST32	__PRI32_PREFIX "d"
-# define SCNdFAST64	__PRI64_PREFIX "d"
+# define SCNdFAST8	__PRI_FAST8_PREFIX "d"
+# define SCNdFAST16	__PRI_FAST16_PREFIX "d"
+# define SCNdFAST32	__PRI_FAST32_PREFIX "d"
+# define SCNdFAST64	__PRI_FAST64_PREFIX "d"
 
 /* Signed decimal notation.  */
 # define SCNi8		__PRI8_PREFIX "i"
@@ -171,15 +171,15 @@ __PUSH_FC_STDLIB
 # define SCNi32		__PRI32_PREFIX "i"
 # define SCNi64		__PRI64_PREFIX "i"
 
-# define SCNiLEAST8	__PRI8_PREFIX "i"
-# define SCNiLEAST16	__PRI16_PREFIX "i"
-# define SCNiLEAST32	__PRI32_PREFIX "i"
-# define SCNiLEAST64	__PRI64_PREFIX "i"
+# define SCNiLEAST8	__PRI_LEAST8_PREFIX "i"
+# define SCNiLEAST16	__PRI_LEAST16_PREFIX "i"
+# define SCNiLEAST32	__PRI_LEAST32_PREFIX "i"
+# define SCNiLEAST64	__PRI_LEAST64_PREFIX "i"
 
-# define SCNiFAST8	__PRI8_PREFIX "i"
-# define SCNiFAST16	__PRIFAST16_PREFIX "i"
-# define SCNiFAST32	__PRI32_PREFIX "i"
-# define SCNiFAST64	__PRI64_PREFIX "i"
+# define SCNiFAST8	__PRI_FAST8_PREFIX "i"
+# define SCNiFAST16	__PRI_FAST16_PREFIX "i"
+# define SCNiFAST32	__PRI_FAST32_PREFIX "i"
+# define SCNiFAST64	__PRI_FAST64_PREFIX "i"
 
 /* Unsigned decimal notation.  */
 # define SCNu8		__PRI8_PREFIX "u"
@@ -187,15 +187,15 @@ __PUSH_FC_STDLIB
 # define SCNu32		__PRI32_PREFIX "u"
 # define SCNu64		__PRI64_PREFIX "u"
 
-# define SCNuLEAST8	__PRI8_PREFIX "u"
-# define SCNuLEAST16	__PRI16_PREFIX "u"
-# define SCNuLEAST32	__PRI32_PREFIX "u"
-# define SCNuLEAST64	__PRI64_PREFIX "u"
+# define SCNuLEAST8	__PRI_LEAST8_PREFIX "u"
+# define SCNuLEAST16	__PRI_LEAST16_PREFIX "u"
+# define SCNuLEAST32	__PRI_LEAST32_PREFIX "u"
+# define SCNuLEAST64	__PRI_LEAST64_PREFIX "u"
 
-# define SCNuFAST8	__PRI8_PREFIX "u"
-# define SCNuFAST16	__PRIFAST16_PREFIX "u"
-# define SCNuFAST32	__PRI32_PREFIX "u"
-# define SCNuFAST64	__PRI64_PREFIX "u"
+# define SCNuFAST8	__PRI_FAST8_PREFIX "u"
+# define SCNuFAST16	__PRI_FAST16_PREFIX "u"
+# define SCNuFAST32	__PRI_FAST32_PREFIX "u"
+# define SCNuFAST64	__PRI_FAST64_PREFIX "u"
 
 /* Octal notation.  */
 # define SCNo8		__PRI8_PREFIX "o"
@@ -203,15 +203,15 @@ __PUSH_FC_STDLIB
 # define SCNo32		__PRI32_PREFIX "o"
 # define SCNo64		__PRI64_PREFIX "o"
 
-# define SCNoLEAST8	__PRI8_PREFIX "o"
-# define SCNoLEAST16	__PRI16_PREFIX "o"
-# define SCNoLEAST32	__PRI32_PREFIX "o"
-# define SCNoLEAST64	__PRI64_PREFIX "o"
+# define SCNoLEAST8	__PRI_LEAST8_PREFIX "o"
+# define SCNoLEAST16	__PRI_LEAST16_PREFIX "o"
+# define SCNoLEAST32	__PRI_LEAST32_PREFIX "o"
+# define SCNoLEAST64	__PRI_LEAST64_PREFIX "o"
 
-# define SCNoFAST8	__PRI8_PREFIX "o"
-# define SCNoFAST16	__PRIFAST16_PREFIX "o"
-# define SCNoFAST32	__PRI32_PREFIX "o"
-# define SCNoFAST64	__PRI64_PREFIX "o"
+# define SCNoFAST8	__PRI_FAST8_PREFIX "o"
+# define SCNoFAST16	__PRI_FAST16_PREFIX "o"
+# define SCNoFAST32	__PRI_FAST32_PREFIX "o"
+# define SCNoFAST64	__PRI_FAST64_PREFIX "o"
 
 /* Hexadecimal notation.  */
 # define SCNx8		__PRI8_PREFIX "x"
@@ -219,15 +219,15 @@ __PUSH_FC_STDLIB
 # define SCNx32		__PRI32_PREFIX "x"
 # define SCNx64		__PRI64_PREFIX "x"
 
-# define SCNxLEAST8	__PRI8_PREFIX "x"
-# define SCNxLEAST16	__PRI16_PREFIX "x"
-# define SCNxLEAST32	__PRI32_PREFIX "x"
-# define SCNxLEAST64	__PRI64_PREFIX "x"
+# define SCNxLEAST8	__PRI_LEAST8_PREFIX "x"
+# define SCNxLEAST16	__PRI_LEAST16_PREFIX "x"
+# define SCNxLEAST32	__PRI_LEAST32_PREFIX "x"
+# define SCNxLEAST64	__PRI_LEAST64_PREFIX "x"
 
-# define SCNxFAST8	__PRI8_PREFIX "x"
-# define SCNxFAST16	__PRIFAST16_PREFIX "x"
-# define SCNxFAST32	__PRI32_PREFIX "x"
-# define SCNxFAST64	__PRI64_PREFIX "x"
+# define SCNxFAST8	__PRI_FAST8_PREFIX "x"
+# define SCNxFAST16	__PRI_FAST16_PREFIX "x"
+# define SCNxFAST32	__PRI_FAST32_PREFIX "x"
+# define SCNxFAST64	__PRI_FAST64_PREFIX "x"
 
 
 /* Macros for scanning `intmax_t' and `uintmax_t'.  */
@@ -289,4 +289,3 @@ __END_DECLS
 
 __POP_FC_STDLIB
 #endif
-
diff --git a/share/machdeps/machdep-schema.yaml b/share/machdeps/machdep-schema.yaml
index fd2956acbcc81e99978ca204a30930468e090c84..38d83deb0998fd6d36fffa862af9723ca19a8eaa 100644
--- a/share/machdeps/machdep-schema.yaml
+++ b/share/machdeps/machdep-schema.yaml
@@ -136,6 +136,30 @@ has__builtin_va_list:
 
   type: boolean
 
+int_fast8_t:
+
+  description: definition of 'int_fast8_t'
+
+  type: string
+
+int_fast16_t:
+
+  description: definition of 'int_fast16_t'
+
+  type: string
+
+int_fast32_t:
+
+  description: definition of 'int_fast32_t'
+
+  type: string
+
+int_fast64_t:
+
+  description: definition of 'int_fast64_t'
+
+  type: string
+
 intptr_t:
   description: definition of 'intptr_t'
 
@@ -280,6 +304,30 @@ tmp_max:
 
   type: string
 
+uint_fast8_t:
+
+  description: definition of 'uint_fast8_t'
+
+  type: string
+
+uint_fast16_t:
+
+  description: definition of 'uint_fast16_t'
+
+  type: string
+
+uint_fast32_t:
+
+  description: definition of 'uint_fast32_t'
+
+  type: string
+
+uint_fast64_t:
+
+  description: definition of 'uint_fast64_t'
+
+  type: string
+
 uintptr_t:
 
   description: definition of 'uintptr_t'
diff --git a/share/machdeps/machdep_avr_16.yaml b/share/machdeps/machdep_avr_16.yaml
index be0110cb5e3988fd8abf5762d309f3e4b917e8b7..9d27004bf797a7b0212f9bf2675f0fc7d73cc285 100644
--- a/share/machdeps/machdep_avr_16.yaml
+++ b/share/machdeps/machdep_avr_16.yaml
@@ -141,6 +141,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: int
+int_fast32_t: int
+int_fast64_t: long long
+int_fast8_t: signed char
 intptr_t: int
 l_tmpnam: '20'
 little_endian: true
@@ -165,6 +169,10 @@ sizeof_void: 1
 ssize_t: int
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned int
+uint_fast64_t: unsigned long long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned int
 version: clang version 15.0.7
 wchar_t: int
diff --git a/share/machdeps/machdep_gcc_x86_16.yaml b/share/machdeps/machdep_gcc_x86_16.yaml
index 118a19fb1548543d496bf287413418c08dbc9032..999181ba2de6423381fc81ccafb975f119461115 100644
--- a/share/machdeps/machdep_gcc_x86_16.yaml
+++ b/share/machdeps/machdep_gcc_x86_16.yaml
@@ -135,6 +135,10 @@ errno:
     exdev: '18'
     exfull: '54'
 has__builtin_va_list: true
+int_fast8_t: signed char
+int_fast16_t: signed int
+int_fast32_t: long
+int_fast64_t: long long
 intptr_t: long
 little_endian: true
 nsig: '65'
@@ -153,6 +157,10 @@ sizeof_short: 2
 sizeof_void: 1
 ssize_t: int
 time_t: long
+uint_fast8_t: unsigned char
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned long
+uint_fast64_t: unsigned long long
 uintptr_t: unsigned long
 version: none
 wchar_t: int
diff --git a/share/machdeps/machdep_gcc_x86_32.yaml b/share/machdeps/machdep_gcc_x86_32.yaml
index 86de296ecf7f02dbb761b11da6096955ff6dc3be..53620c5a55d9a2df7d099dc9ddcfafc3f7493cdc 100644
--- a/share/machdeps/machdep_gcc_x86_32.yaml
+++ b/share/machdeps/machdep_gcc_x86_32.yaml
@@ -139,6 +139,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: int
+int_fast32_t: int
+int_fast64_t: long long
+int_fast8_t: signed char
 intptr_t: int
 l_tmpnam: '20'
 little_endian: true
@@ -163,6 +167,10 @@ sizeof_void: 1
 ssize_t: int
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned int
+uint_fast64_t: unsigned long long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned int
 version: gcc (GCC) 12.2.1 20230201
 wchar_t: long
diff --git a/share/machdeps/machdep_gcc_x86_64.yaml b/share/machdeps/machdep_gcc_x86_64.yaml
index 8e471be4afade2fe6aa4b582f0b6dbb949a0eb25..762187987d19204e676c1f4495f040d42ffe365a 100644
--- a/share/machdeps/machdep_gcc_x86_64.yaml
+++ b/share/machdeps/machdep_gcc_x86_64.yaml
@@ -139,6 +139,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: long
+int_fast32_t: long
+int_fast64_t: long
+int_fast8_t: signed char
 intptr_t: long
 l_tmpnam: '20'
 little_endian: true
@@ -163,6 +167,10 @@ sizeof_void: 1
 ssize_t: long
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned long
+uint_fast32_t: unsigned long
+uint_fast64_t: unsigned long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned long
 version: gcc (GCC) 12.2.1 20230201
 wchar_t: int
diff --git a/share/machdeps/machdep_msvc_x86_64.yaml b/share/machdeps/machdep_msvc_x86_64.yaml
index aec2dd33a28c81c1a8a540503fcdddbf6ec36ccd..39aaae34bab110b374fe2808eed10f57f25e4b6b 100644
--- a/share/machdeps/machdep_msvc_x86_64.yaml
+++ b/share/machdeps/machdep_msvc_x86_64.yaml
@@ -94,6 +94,10 @@ errno:
     eownerdead: '133'
     enotrecoverable: '127'
 has__builtin_va_list: false
+int_fast8_t: signed char
+int_fast16_t: signed int
+int_fast32_t: signed int
+int_fast64_t: signed long long
 intptr_t: signed long long
 little_endian: true
 nsig: '23'
@@ -113,6 +117,10 @@ sizeof_short: 2
 sizeof_void: 0
 ssize_t: long long
 time_t: long long
+uint_fast8_t: unsigned char
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned int
+uint_fast64_t: unsigned long long
 uintptr_t: unsigned long long
 version: MSVC - X86-64bits mode
 wchar_t: unsigned short
diff --git a/share/machdeps/machdep_ppc_32.yaml b/share/machdeps/machdep_ppc_32.yaml
index a295dd8ab58d0bc0c582c3e068d3b2100acccca1..57d62e62f9bfd2426b4a9f6487fc4e19bb9489d3 100644
--- a/share/machdeps/machdep_ppc_32.yaml
+++ b/share/machdeps/machdep_ppc_32.yaml
@@ -141,6 +141,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: int
+int_fast32_t: int
+int_fast64_t: long long
+int_fast8_t: signed char
 intptr_t: int
 l_tmpnam: '20'
 little_endian: false
@@ -165,6 +169,10 @@ sizeof_void: 1
 ssize_t: int
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned int
+uint_fast64_t: unsigned long long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned int
 version: clang version 15.0.7
 wchar_t: int
diff --git a/share/machdeps/machdep_x86_16.yaml b/share/machdeps/machdep_x86_16.yaml
index 276ec58c4c65720960ab9156834f3d506ae754af..5f90098938e0b6f584f3dc9604018e2f13432d53 100644
--- a/share/machdeps/machdep_x86_16.yaml
+++ b/share/machdeps/machdep_x86_16.yaml
@@ -135,6 +135,10 @@ errno:
     exdev: '18'
     exfull: '54'
 has__builtin_va_list: true
+int_fast8_t: signed char
+int_fast16_t: signed int
+int_fast32_t: long
+int_fast64_t: long long
 intptr_t: long
 little_endian: true
 nsig: '65'
@@ -153,6 +157,10 @@ sizeof_short: 2
 sizeof_void: -1
 ssize_t: int
 time_t: long
+uint_fast8_t: unsigned char
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned long
+uint_fast64_t: unsigned long long
 uintptr_t: unsigned long
 version: none
 wchar_t: int
diff --git a/share/machdeps/machdep_x86_32.yaml b/share/machdeps/machdep_x86_32.yaml
index 5b8d5ad1fe6077b83d327eddb87fb0a6f76cd1e7..63513825a26e61f5717e3ccc4925c79e1925558f 100644
--- a/share/machdeps/machdep_x86_32.yaml
+++ b/share/machdeps/machdep_x86_32.yaml
@@ -139,6 +139,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: int
+int_fast32_t: int
+int_fast64_t: long long
+int_fast8_t: signed char
 intptr_t: int
 l_tmpnam: '20'
 little_endian: true
@@ -163,6 +167,10 @@ sizeof_void: -1
 ssize_t: int
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned int
+uint_fast32_t: unsigned int
+uint_fast64_t: unsigned long long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned int
 version: gcc (GCC) 12.2.1 20230201
 wchar_t: long
diff --git a/share/machdeps/machdep_x86_64.yaml b/share/machdeps/machdep_x86_64.yaml
index c572ec0c4a15cb8ecf123056f804f54babb46c6e..7852eb877a8e33f7454f963b27c611a741fce581 100644
--- a/share/machdeps/machdep_x86_64.yaml
+++ b/share/machdeps/machdep_x86_64.yaml
@@ -139,6 +139,10 @@ errno:
 filename_max: '4096'
 fopen_max: '16'
 has__builtin_va_list: true
+int_fast16_t: long
+int_fast32_t: long
+int_fast64_t: long
+int_fast8_t: signed char
 intptr_t: long
 l_tmpnam: '20'
 little_endian: true
@@ -163,6 +167,10 @@ sizeof_void: -1
 ssize_t: long
 time_t: long
 tmp_max: '238328'
+uint_fast16_t: unsigned long
+uint_fast32_t: unsigned long
+uint_fast64_t: unsigned long
+uint_fast8_t: unsigned char
 uintptr_t: unsigned long
 version: gcc (GCC) 12.2.1 20230201
 wchar_t: int
diff --git a/share/machdeps/make_machdep/int_fast16_t.c b/share/machdeps/make_machdep/int_fast16_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..77a451ab2da7c881ce840e8e679aabb89f874444
--- /dev/null
+++ b/share/machdeps/make_machdep/int_fast16_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE int_fast16_t
+
+TEST_TYPE_IS(signed char);
+TEST_TYPE_IS(short);
+TEST_TYPE_IS(int);
+TEST_TYPE_IS(long);
+TEST_TYPE_IS(long long);
diff --git a/share/machdeps/make_machdep/int_fast32_t.c b/share/machdeps/make_machdep/int_fast32_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..fbbfee3a162b972732022954b08a3bd57bcee3ba
--- /dev/null
+++ b/share/machdeps/make_machdep/int_fast32_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE int_fast32_t
+
+TEST_TYPE_IS(signed char);
+TEST_TYPE_IS(short);
+TEST_TYPE_IS(int);
+TEST_TYPE_IS(long);
+TEST_TYPE_IS(long long);
diff --git a/share/machdeps/make_machdep/int_fast64_t.c b/share/machdeps/make_machdep/int_fast64_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..43b3ce1797a450aa87a14a06646c4a0eb50cbd29
--- /dev/null
+++ b/share/machdeps/make_machdep/int_fast64_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE int_fast64_t
+
+TEST_TYPE_IS(signed char);
+TEST_TYPE_IS(short);
+TEST_TYPE_IS(int);
+TEST_TYPE_IS(long);
+TEST_TYPE_IS(long long);
diff --git a/share/machdeps/make_machdep/int_fast8_t.c b/share/machdeps/make_machdep/int_fast8_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..6d572f914dee75cba1307076181000cea8495ca1
--- /dev/null
+++ b/share/machdeps/make_machdep/int_fast8_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE int_fast8_t
+
+TEST_TYPE_IS(signed char);
+TEST_TYPE_IS(short);
+TEST_TYPE_IS(int);
+TEST_TYPE_IS(long);
+TEST_TYPE_IS(long long);
diff --git a/share/machdeps/make_machdep/make_machdep.py b/share/machdeps/make_machdep/make_machdep.py
index 531334e8659a52a1fd9d0ab618de2a34eb164d9d..8c49b8e495b2e3d2154dc1c2a5e32074ca175911 100755
--- a/share/machdeps/make_machdep/make_machdep.py
+++ b/share/machdeps/make_machdep/make_machdep.py
@@ -186,6 +186,14 @@ source_files = [
     ("ptrdiff_t.c", "type"),
     ("intptr_t.c", "type"),
     ("uintptr_t.c", "type"),
+    ("int_fast8_t.c", "type"),
+    ("int_fast16_t.c", "type"),
+    ("int_fast32_t.c", "type"),
+    ("int_fast64_t.c", "type"),
+    ("uint_fast8_t.c", "type"),
+    ("uint_fast16_t.c", "type"),
+    ("uint_fast32_t.c", "type"),
+    ("uint_fast64_t.c", "type"),
     ("wint_t.c", "type"),
     ("sig_atomic_t.c", "type"),
     ("time_t.c", "type"),
diff --git a/share/machdeps/make_machdep/uint_fast16_t.c b/share/machdeps/make_machdep/uint_fast16_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..8b6524211c85d80f4089d79492e89ec7feabc559
--- /dev/null
+++ b/share/machdeps/make_machdep/uint_fast16_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE uint_fast16_t
+
+TEST_TYPE_IS(unsigned char);
+TEST_TYPE_IS(unsigned short);
+TEST_TYPE_IS(unsigned int);
+TEST_TYPE_IS(unsigned long);
+TEST_TYPE_IS(unsigned long long);
diff --git a/share/machdeps/make_machdep/uint_fast32_t.c b/share/machdeps/make_machdep/uint_fast32_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..ff8e7cbe8f5157e82edb98ae4e4d5e63fd034514
--- /dev/null
+++ b/share/machdeps/make_machdep/uint_fast32_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE uint_fast32_t
+
+TEST_TYPE_IS(unsigned char);
+TEST_TYPE_IS(unsigned short);
+TEST_TYPE_IS(unsigned int);
+TEST_TYPE_IS(unsigned long);
+TEST_TYPE_IS(unsigned long long);
diff --git a/share/machdeps/make_machdep/uint_fast64_t.c b/share/machdeps/make_machdep/uint_fast64_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..5dbc103bd28c963d211b051cebf5bf80e3fb18ff
--- /dev/null
+++ b/share/machdeps/make_machdep/uint_fast64_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE uint_fast64_t
+
+TEST_TYPE_IS(unsigned char);
+TEST_TYPE_IS(unsigned short);
+TEST_TYPE_IS(unsigned int);
+TEST_TYPE_IS(unsigned long);
+TEST_TYPE_IS(unsigned long long);
diff --git a/share/machdeps/make_machdep/uint_fast8_t.c b/share/machdeps/make_machdep/uint_fast8_t.c
new file mode 100644
index 0000000000000000000000000000000000000000..d7710d97b006d2a3f28f8eaa16b33af1e0340017
--- /dev/null
+++ b/share/machdeps/make_machdep/uint_fast8_t.c
@@ -0,0 +1,31 @@
+/**************************************************************************/
+/*                                                                        */
+/*  This file is part of Frama-C.                                         */
+/*                                                                        */
+/*  Copyright (C) 2007-2023                                               */
+/*    CEA (Commissariat à l'énergie atomique et aux énergies              */
+/*         alternatives)                                                  */
+/*                                                                        */
+/*  you can redistribute it and/or modify it under the terms of the GNU   */
+/*  Lesser General Public License as published by the Free Software       */
+/*  Foundation, version 2.1.                                              */
+/*                                                                        */
+/*  It is distributed in the hope that it will be useful,                 */
+/*  but WITHOUT ANY WARRANTY; without even the implied warranty of        */
+/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         */
+/*  GNU Lesser General Public License for more details.                   */
+/*                                                                        */
+/*  See the GNU Lesser General Public License version 2.1                 */
+/*  for more details (enclosed in the file licenses/LGPLv2.1).            */
+/*                                                                        */
+/**************************************************************************/
+
+#include "make_machdep_common.h"
+#include <stdint.h>
+#define TEST_TYPE uint_fast8_t
+
+TEST_TYPE_IS(unsigned char);
+TEST_TYPE_IS(unsigned short);
+TEST_TYPE_IS(unsigned int);
+TEST_TYPE_IS(unsigned long);
+TEST_TYPE_IS(unsigned long long);
diff --git a/src/kernel_internals/runtime/machdep.ml b/src/kernel_internals/runtime/machdep.ml
index a5cbdd49eb3303548e92e158c565f402fdeeac52..127f612a11ebf2100dd0f4f560d1e2e3d5a4f8d4 100644
--- a/src/kernel_internals/runtime/machdep.ml
+++ b/src/kernel_internals/runtime/machdep.ml
@@ -148,8 +148,7 @@ let gen_fixed_size_family fmt bitsize mach =
   | Some (exact_size, kind) ->
     if size = exact_size then
       gen_int_type_family fmt (string_of_int bitsize) bitsize kind;
-    gen_int_type_family fmt ("_LEAST" ^ string_of_int bitsize) bitsize kind;
-    gen_int_type_family fmt ("_FAST" ^ string_of_int bitsize) bitsize kind
+    gen_int_type_family fmt ("_LEAST" ^ string_of_int bitsize) bitsize kind
 
 let gen_max_size_int fmt mach =
   gen_int_type_family fmt "MAX" (8 * mach.sizeof_longlong) "long long"
@@ -194,6 +193,16 @@ let gen_intlike_max fmt name repr mach =
   let repr_name, _ = List.assoc repr (std_type_name mach) in
   gen_define_string fmt macro ("__FC_" ^ repr_name ^ "_MAX")
 
+let gen_fast_int fmt bitsize signed repr mach =
+  let name = Format.sprintf "_FAST%d" bitsize in
+  let full_name =
+    Format.sprintf "__%sINT%s" (if signed then "" else "U") name
+  in
+  gen_define_string fmt (full_name ^ "_T") repr;
+  if signed then gen_intlike_min fmt full_name repr mach;
+  gen_intlike_max fmt full_name repr mach;
+  if signed then gen_define_printing_prefix fmt name (no_signedness repr)
+
 (* assuming all archs have an 8-bit char. In any case, if we end up dealing
    with something else at some point, machdep will not be the only place were
    changes will be required. *)
@@ -212,6 +221,14 @@ let gen_all_defines fmt mach =
   gen_fixed_size_family fmt 16 mach;
   gen_fixed_size_family fmt 32 mach;
   gen_fixed_size_family fmt 64 mach;
+  gen_fast_int fmt 8 true mach.int_fast8_t mach;
+  gen_fast_int fmt 16 true mach.int_fast16_t mach;
+  gen_fast_int fmt 32 true mach.int_fast32_t mach;
+  gen_fast_int fmt 64 true mach.int_fast64_t mach;
+  gen_fast_int fmt 8 false mach.uint_fast8_t mach;
+  gen_fast_int fmt 16 false mach.uint_fast16_t mach;
+  gen_fast_int fmt 32 false mach.uint_fast32_t mach;
+  gen_fast_int fmt 64 false mach.uint_fast64_t mach;
   gen_max_size_int fmt mach;
   gen_std_min_max fmt mach;
   gen_va_list_repr fmt mach;
diff --git a/src/kernel_services/ast_data/cil_types.ml b/src/kernel_services/ast_data/cil_types.ml
index a42c8f7076d57e46602167c90f9a2fc90b86e7cd..55986d1421ae90c05864b561a67c9c5d72a2094a 100644
--- a/src/kernel_services/ast_data/cil_types.ml
+++ b/src/kernel_services/ast_data/cil_types.ml
@@ -1881,6 +1881,14 @@ type mach = {
   ptrdiff_t: string;      (* Type of "ptrdiff_t" *)
   intptr_t: string;       (* Type of "intptr_t" *)
   uintptr_t: string;      (* Type of "uintptr_t" *)
+  int_fast8_t: string;     (* Type of "int_fast8_t" *)
+  int_fast16_t: string;     (* Type of "int_fast16_t" *)
+  int_fast32_t: string;     (* Type of "int_fast32_t" *)
+  int_fast64_t: string;     (* Type of "int_fast64_t" *)
+  uint_fast8_t: string;     (* Type of "uint_fast8_t" *)
+  uint_fast16_t: string;     (* Type of "uint_fast16_t" *)
+  uint_fast32_t: string;     (* Type of "uint_fast32_t" *)
+  uint_fast64_t: string;     (* Type of "uint_fast64_t" *)
   wint_t: string;          (* Type of "wint_t" *)
   sig_atomic_t: string;   (* Type of "sig_atomic_t" *)
   time_t: string;          (* Type of "time_t" *)
diff --git a/src/kernel_services/ast_queries/cil_datatype.ml b/src/kernel_services/ast_queries/cil_datatype.ml
index b92229e2a90c7b69f5a13df9f0bb76f9e3355904..80698e872333b3d78c8c0a3bcd63ecaf2dc0b617 100644
--- a/src/kernel_services/ast_queries/cil_datatype.ml
+++ b/src/kernel_services/ast_queries/cil_datatype.ml
@@ -2645,6 +2645,14 @@ let dummy_machdep =
     ptrdiff_t = "long";
     intptr_t = "long";       (* Type of "intptr_t" *)
     uintptr_t = "unsigned long";      (* Type of "uintptr_t" *)
+    int_fast8_t = "signed char";
+    int_fast16_t = "long";
+    int_fast32_t = "long";
+    int_fast64_t = "long";
+    uint_fast8_t = "unsigned char";
+    uint_fast16_t = "unsigned long";
+    uint_fast32_t = "unsigned long";
+    uint_fast64_t = "unsigned long";
     wint_t = "int";
     sig_atomic_t = "int";
     time_t = "long";
diff --git a/src/kernel_services/ast_queries/file.ml b/src/kernel_services/ast_queries/file.ml
index 2431ccb6c45cecef9f17d97bbf439d2886e6a2cc..3f8d916dac75ec90f93aac3df321ae6c3473ff3d 100644
--- a/src/kernel_services/ast_queries/file.ml
+++ b/src/kernel_services/ast_queries/file.ml
@@ -363,6 +363,14 @@ type mach = Cil_types.mach = {
   ptrdiff_t: string;
   intptr_t: string;
   uintptr_t: string;
+  int_fast8_t: string;
+  int_fast16_t: string;
+  int_fast32_t: string;
+  int_fast64_t: string;
+  uint_fast8_t: string;
+  uint_fast16_t: string;
+  uint_fast32_t: string;
+  uint_fast64_t: string;
   wint_t: string;
   sig_atomic_t: string;
   time_t: string;
diff --git a/tests/libc/oracle/inttypes_h.2.res.oracle b/tests/libc/oracle/inttypes_h.2.res.oracle
index 92f400d2eb09f2eaf2e35ed7bd2037d5632d7974..df0cd81b6ed3724ab9a3a7826de79ae61ef9ba46 100644
--- a/tests/libc/oracle/inttypes_h.2.res.oracle
+++ b/tests/libc/oracle/inttypes_h.2.res.oracle
@@ -1641,7 +1641,7 @@ int printf_va_54(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_55(char const * restrict format, int *param0);
+int scanf_va_55(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1654,7 +1654,7 @@ int scanf_va_55(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_55(char const * restrict format, int param0);
+int printf_va_55(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1671,7 +1671,7 @@ int printf_va_55(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_56(char const * restrict format, int *param0);
+int scanf_va_56(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1684,7 +1684,7 @@ int scanf_va_56(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_56(char const * restrict format, int param0);
+int printf_va_56(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1701,7 +1701,7 @@ int printf_va_56(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_57(char const * restrict format, unsigned int *param0);
+int scanf_va_57(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1714,7 +1714,7 @@ int scanf_va_57(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_57(char const * restrict format, unsigned int param0);
+int printf_va_57(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1731,7 +1731,7 @@ int printf_va_57(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_58(char const * restrict format, unsigned int *param0);
+int scanf_va_58(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1744,7 +1744,7 @@ int scanf_va_58(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_58(char const * restrict format, unsigned int param0);
+int printf_va_58(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1761,7 +1761,7 @@ int printf_va_58(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_59(char const * restrict format, unsigned int *param0);
+int scanf_va_59(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1774,7 +1774,7 @@ int scanf_va_59(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_59(char const * restrict format, unsigned int param0);
+int printf_va_59(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1791,7 +1791,7 @@ int printf_va_59(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_60(char const * restrict format, unsigned int *param0);
+int scanf_va_60(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1804,7 +1804,7 @@ int scanf_va_60(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_60(char const * restrict format, unsigned int param0);
+int printf_va_60(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1821,7 +1821,7 @@ int printf_va_60(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_61(char const * restrict format, int *param0);
+int scanf_va_61(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1834,7 +1834,7 @@ int scanf_va_61(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_61(char const * restrict format, int param0);
+int printf_va_61(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1851,7 +1851,7 @@ int printf_va_61(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_62(char const * restrict format, int *param0);
+int scanf_va_62(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1864,7 +1864,7 @@ int scanf_va_62(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_62(char const * restrict format, int param0);
+int printf_va_62(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1881,7 +1881,7 @@ int printf_va_62(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_63(char const * restrict format, unsigned int *param0);
+int scanf_va_63(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1894,7 +1894,7 @@ int scanf_va_63(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_63(char const * restrict format, unsigned int param0);
+int printf_va_63(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1911,7 +1911,7 @@ int printf_va_63(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_64(char const * restrict format, unsigned int *param0);
+int scanf_va_64(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1924,7 +1924,7 @@ int scanf_va_64(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_64(char const * restrict format, unsigned int param0);
+int printf_va_64(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1941,7 +1941,7 @@ int printf_va_64(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_65(char const * restrict format, unsigned int *param0);
+int scanf_va_65(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1954,7 +1954,7 @@ int scanf_va_65(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_65(char const * restrict format, unsigned int param0);
+int printf_va_65(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1971,7 +1971,7 @@ int printf_va_65(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_66(char const * restrict format, unsigned int *param0);
+int scanf_va_66(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1984,7 +1984,7 @@ int scanf_va_66(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_66(char const * restrict format, unsigned int param0);
+int printf_va_66(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -2693,39 +2693,39 @@ int main(void)
   }
   {
     int_fast16_t x_17;
-    scanf("%d",& x_17); /* scanf_va_55 */
-    printf("%d",x_17); /* printf_va_55 */
-    scanf("%i",& x_17); /* scanf_va_56 */
-    printf("%i",x_17); /* printf_va_56 */
+    scanf("%ld",& x_17); /* scanf_va_55 */
+    printf("%ld",x_17); /* printf_va_55 */
+    scanf("%li",& x_17); /* scanf_va_56 */
+    printf("%li",x_17); /* printf_va_56 */
   }
   {
     uint_fast16_t x_18;
-    scanf("%o",& x_18); /* scanf_va_57 */
-    printf("%o",x_18); /* printf_va_57 */
-    scanf("%u",& x_18); /* scanf_va_58 */
-    printf("%u",x_18); /* printf_va_58 */
-    scanf("%x",& x_18); /* scanf_va_59 */
-    printf("%x",x_18); /* printf_va_59 */
-    scanf("%x",& x_18); /* scanf_va_60 */
-    printf("%X",x_18); /* printf_va_60 */
+    scanf("%lo",& x_18); /* scanf_va_57 */
+    printf("%lo",x_18); /* printf_va_57 */
+    scanf("%lu",& x_18); /* scanf_va_58 */
+    printf("%lu",x_18); /* printf_va_58 */
+    scanf("%lx",& x_18); /* scanf_va_59 */
+    printf("%lx",x_18); /* printf_va_59 */
+    scanf("%lx",& x_18); /* scanf_va_60 */
+    printf("%lX",x_18); /* printf_va_60 */
   }
   {
     int_fast32_t x_19;
-    scanf("%d",& x_19); /* scanf_va_61 */
-    printf("%d",x_19); /* printf_va_61 */
-    scanf("%i",& x_19); /* scanf_va_62 */
-    printf("%i",x_19); /* printf_va_62 */
+    scanf("%ld",& x_19); /* scanf_va_61 */
+    printf("%ld",x_19); /* printf_va_61 */
+    scanf("%li",& x_19); /* scanf_va_62 */
+    printf("%li",x_19); /* printf_va_62 */
   }
   {
     uint_fast32_t x_20;
-    scanf("%o",& x_20); /* scanf_va_63 */
-    printf("%o",x_20); /* printf_va_63 */
-    scanf("%u",& x_20); /* scanf_va_64 */
-    printf("%u",x_20); /* printf_va_64 */
-    scanf("%x",& x_20); /* scanf_va_65 */
-    printf("%x",x_20); /* printf_va_65 */
-    scanf("%x",& x_20); /* scanf_va_66 */
-    printf("%X",x_20); /* printf_va_66 */
+    scanf("%lo",& x_20); /* scanf_va_63 */
+    printf("%lo",x_20); /* printf_va_63 */
+    scanf("%lu",& x_20); /* scanf_va_64 */
+    printf("%lu",x_20); /* printf_va_64 */
+    scanf("%lx",& x_20); /* scanf_va_65 */
+    printf("%lx",x_20); /* printf_va_65 */
+    scanf("%lx",& x_20); /* scanf_va_66 */
+    printf("%lX",x_20); /* printf_va_66 */
   }
   {
     int_fast64_t x_21;
diff --git a/tests/libc/oracle/inttypes_h.5.res.oracle b/tests/libc/oracle/inttypes_h.5.res.oracle
index 92f400d2eb09f2eaf2e35ed7bd2037d5632d7974..df0cd81b6ed3724ab9a3a7826de79ae61ef9ba46 100644
--- a/tests/libc/oracle/inttypes_h.5.res.oracle
+++ b/tests/libc/oracle/inttypes_h.5.res.oracle
@@ -1641,7 +1641,7 @@ int printf_va_54(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_55(char const * restrict format, int *param0);
+int scanf_va_55(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1654,7 +1654,7 @@ int scanf_va_55(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_55(char const * restrict format, int param0);
+int printf_va_55(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1671,7 +1671,7 @@ int printf_va_55(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_56(char const * restrict format, int *param0);
+int scanf_va_56(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1684,7 +1684,7 @@ int scanf_va_56(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_56(char const * restrict format, int param0);
+int printf_va_56(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1701,7 +1701,7 @@ int printf_va_56(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_57(char const * restrict format, unsigned int *param0);
+int scanf_va_57(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1714,7 +1714,7 @@ int scanf_va_57(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_57(char const * restrict format, unsigned int param0);
+int printf_va_57(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1731,7 +1731,7 @@ int printf_va_57(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_58(char const * restrict format, unsigned int *param0);
+int scanf_va_58(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1744,7 +1744,7 @@ int scanf_va_58(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_58(char const * restrict format, unsigned int param0);
+int printf_va_58(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1761,7 +1761,7 @@ int printf_va_58(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_59(char const * restrict format, unsigned int *param0);
+int scanf_va_59(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1774,7 +1774,7 @@ int scanf_va_59(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_59(char const * restrict format, unsigned int param0);
+int printf_va_59(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1791,7 +1791,7 @@ int printf_va_59(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_60(char const * restrict format, unsigned int *param0);
+int scanf_va_60(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1804,7 +1804,7 @@ int scanf_va_60(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_60(char const * restrict format, unsigned int param0);
+int printf_va_60(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1821,7 +1821,7 @@ int printf_va_60(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_61(char const * restrict format, int *param0);
+int scanf_va_61(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1834,7 +1834,7 @@ int scanf_va_61(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_61(char const * restrict format, int param0);
+int printf_va_61(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1851,7 +1851,7 @@ int printf_va_61(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_62(char const * restrict format, int *param0);
+int scanf_va_62(char const * restrict format, long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1864,7 +1864,7 @@ int scanf_va_62(char const * restrict format, int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_62(char const * restrict format, int param0);
+int printf_va_62(char const * restrict format, long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1881,7 +1881,7 @@ int printf_va_62(char const * restrict format, int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_63(char const * restrict format, unsigned int *param0);
+int scanf_va_63(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1894,7 +1894,7 @@ int scanf_va_63(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_63(char const * restrict format, unsigned int param0);
+int printf_va_63(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1911,7 +1911,7 @@ int printf_va_63(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_64(char const * restrict format, unsigned int *param0);
+int scanf_va_64(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1924,7 +1924,7 @@ int scanf_va_64(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_64(char const * restrict format, unsigned int param0);
+int printf_va_64(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1941,7 +1941,7 @@ int printf_va_64(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_65(char const * restrict format, unsigned int *param0);
+int scanf_va_65(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1954,7 +1954,7 @@ int scanf_va_65(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_65(char const * restrict format, unsigned int param0);
+int printf_va_65(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -1971,7 +1971,7 @@ int printf_va_65(char const * restrict format, unsigned int param0);
       \from (indirect: __fc_stdin->__fc_FILE_id), __fc_stdin->__fc_FILE_data,
             (indirect: *(format + (0 ..)));
  */
-int scanf_va_66(char const * restrict format, unsigned int *param0);
+int scanf_va_66(char const * restrict format, unsigned long *param0);
 
 /*@ requires valid_read_string(format);
     assigns \result, __fc_stdout->__fc_FILE_data;
@@ -1984,7 +1984,7 @@ int scanf_va_66(char const * restrict format, unsigned int *param0);
             __fc_stdout->__fc_FILE_data, (indirect: *(format + (0 ..))),
             param0;
  */
-int printf_va_66(char const * restrict format, unsigned int param0);
+int printf_va_66(char const * restrict format, unsigned long param0);
 
 /*@ requires \valid(param0);
     requires valid_read_string(format);
@@ -2693,39 +2693,39 @@ int main(void)
   }
   {
     int_fast16_t x_17;
-    scanf("%d",& x_17); /* scanf_va_55 */
-    printf("%d",x_17); /* printf_va_55 */
-    scanf("%i",& x_17); /* scanf_va_56 */
-    printf("%i",x_17); /* printf_va_56 */
+    scanf("%ld",& x_17); /* scanf_va_55 */
+    printf("%ld",x_17); /* printf_va_55 */
+    scanf("%li",& x_17); /* scanf_va_56 */
+    printf("%li",x_17); /* printf_va_56 */
   }
   {
     uint_fast16_t x_18;
-    scanf("%o",& x_18); /* scanf_va_57 */
-    printf("%o",x_18); /* printf_va_57 */
-    scanf("%u",& x_18); /* scanf_va_58 */
-    printf("%u",x_18); /* printf_va_58 */
-    scanf("%x",& x_18); /* scanf_va_59 */
-    printf("%x",x_18); /* printf_va_59 */
-    scanf("%x",& x_18); /* scanf_va_60 */
-    printf("%X",x_18); /* printf_va_60 */
+    scanf("%lo",& x_18); /* scanf_va_57 */
+    printf("%lo",x_18); /* printf_va_57 */
+    scanf("%lu",& x_18); /* scanf_va_58 */
+    printf("%lu",x_18); /* printf_va_58 */
+    scanf("%lx",& x_18); /* scanf_va_59 */
+    printf("%lx",x_18); /* printf_va_59 */
+    scanf("%lx",& x_18); /* scanf_va_60 */
+    printf("%lX",x_18); /* printf_va_60 */
   }
   {
     int_fast32_t x_19;
-    scanf("%d",& x_19); /* scanf_va_61 */
-    printf("%d",x_19); /* printf_va_61 */
-    scanf("%i",& x_19); /* scanf_va_62 */
-    printf("%i",x_19); /* printf_va_62 */
+    scanf("%ld",& x_19); /* scanf_va_61 */
+    printf("%ld",x_19); /* printf_va_61 */
+    scanf("%li",& x_19); /* scanf_va_62 */
+    printf("%li",x_19); /* printf_va_62 */
   }
   {
     uint_fast32_t x_20;
-    scanf("%o",& x_20); /* scanf_va_63 */
-    printf("%o",x_20); /* printf_va_63 */
-    scanf("%u",& x_20); /* scanf_va_64 */
-    printf("%u",x_20); /* printf_va_64 */
-    scanf("%x",& x_20); /* scanf_va_65 */
-    printf("%x",x_20); /* printf_va_65 */
-    scanf("%x",& x_20); /* scanf_va_66 */
-    printf("%X",x_20); /* printf_va_66 */
+    scanf("%lo",& x_20); /* scanf_va_63 */
+    printf("%lo",x_20); /* printf_va_63 */
+    scanf("%lu",& x_20); /* scanf_va_64 */
+    printf("%lu",x_20); /* printf_va_64 */
+    scanf("%lx",& x_20); /* scanf_va_65 */
+    printf("%lx",x_20); /* printf_va_65 */
+    scanf("%lx",& x_20); /* scanf_va_66 */
+    printf("%lX",x_20); /* printf_va_66 */
   }
   {
     int_fast64_t x_21;
diff --git a/tests/misc/custom_machdep.ml b/tests/misc/custom_machdep.ml
index 353ed1a7e9320a55a26961c0a6e59c533ce9e742..974683a3127e067263f421bf5edbb834b5595dc4 100644
--- a/tests/misc/custom_machdep.ml
+++ b/tests/misc/custom_machdep.ml
@@ -19,6 +19,14 @@ let mach =
     ssize_t = "long";
     intptr_t = "long";
     uintptr_t = "unsigned long";
+    int_fast8_t = "signed char";
+    int_fast16_t = "long";
+    int_fast32_t = "long";
+    int_fast64_t = "long long";
+    uint_fast8_t = "unsigned char";
+    uint_fast16_t = "unsigned long";
+    uint_fast32_t = "unsigned long";
+    uint_fast64_t = "unsigned long long";
     wint_t = "int";
     wchar_t = "int";
     ptrdiff_t = "int";
diff --git a/tests/misc/custom_machdep.yaml b/tests/misc/custom_machdep.yaml
index c80687f42c7e9131b35087845516230cead5fdee..1fe7b404a4303ff226df04a6635ec877c825c100 100644
--- a/tests/misc/custom_machdep.yaml
+++ b/tests/misc/custom_machdep.yaml
@@ -17,6 +17,14 @@ little_endian: true
 ptrdiff_t: int
 intptr_t: long
 uintptr_t: unsigned long
+int_fast8_t: signed char
+int_fast16_t: long
+int_fast32_t: long
+int_fast64_t: long long
+uint_fast8_t: unsigned char
+uint_fast16_t: unsigned long
+uint_fast32_t: unsigned long
+uint_fast64_t: unsigned long long
 wint_t: int
 size_t: unsigned long
 sizeof_double: 8
diff --git a/tests/syntax/machdep_char_unsigned.ml b/tests/syntax/machdep_char_unsigned.ml
index fd26eedff20b1cb389541eaf444dc60e36354f05..66f8c989e2a92d2c79f6f42597ddcf8f039a489c 100644
--- a/tests/syntax/machdep_char_unsigned.ml
+++ b/tests/syntax/machdep_char_unsigned.ml
@@ -32,6 +32,14 @@ let md = {
   wchar_t = "int";
   intptr_t = "int";
   uintptr_t = "unsigned int";
+  int_fast8_t = "signed char";
+  int_fast16_t = "long";
+  int_fast32_t = "long";
+  int_fast64_t = "long";
+  uint_fast8_t = "unsigned char";
+  uint_fast16_t = "unsigned long";
+  uint_fast32_t = "unsigned long";
+  uint_fast64_t = "usigned long";
   ptrdiff_t = "int";
   wint_t = "long";
   sig_atomic_t = "int";