+ type_const_char_ptr_restrict = make_pointer_type(type_const_char, TYPE_QUALIFIER_RESTRICT);
+
+ /* other types */
+ type_intmax_t = type_long_long;
+ type_size_t = type_unsigned_long;
+ type_ssize_t = type_long;
+ type_ptrdiff_t = type_long;
+ type_uintmax_t = type_unsigned_long_long;
+ type_uptrdiff_t = type_unsigned_long;
+ type_wint_t = type_int;
+
+ type_intmax_t_ptr = make_pointer_type(type_intmax_t, TYPE_QUALIFIER_NONE);
+ type_ptrdiff_t_ptr = make_pointer_type(type_ptrdiff_t, TYPE_QUALIFIER_NONE);
+ type_ssize_t_ptr = make_pointer_type(type_ssize_t, TYPE_QUALIFIER_NONE);
+}
+
+void init_wchar_types(atomic_type_kind_t akind)
+{
+ type_wchar_t = make_atomic_type(akind, TYPE_QUALIFIER_NONE);
+ type_const_wchar_t = make_atomic_type(akind, TYPE_QUALIFIER_CONST);
+ type_wchar_t_ptr = make_pointer_type(type_wchar_t, TYPE_QUALIFIER_NONE);
+ type_const_wchar_t_ptr
+ = make_pointer_type(type_const_wchar_t, TYPE_QUALIFIER_NONE);
+
+ atomic_type_kind_t const u2 = find_unsigned_int_atomic_type_kind_for_size(2);
+ type_char16_t = make_atomic_type(u2, TYPE_QUALIFIER_NONE);
+ type_char16_t_const = make_atomic_type(u2, TYPE_QUALIFIER_CONST);
+ type_char16_t_ptr = make_pointer_type(type_char16_t, TYPE_QUALIFIER_NONE);
+ type_char16_t_const_ptr = make_pointer_type(type_char16_t_const, TYPE_QUALIFIER_NONE);
+
+ atomic_type_kind_t const u4 = find_unsigned_int_atomic_type_kind_for_size(4);
+ type_char32_t = make_atomic_type(u4, TYPE_QUALIFIER_NONE);
+ type_char32_t_const = make_atomic_type(u4, TYPE_QUALIFIER_CONST);
+ type_char32_t_ptr = make_pointer_type(type_char32_t, TYPE_QUALIFIER_NONE);
+ type_char32_t_const_ptr = make_pointer_type(type_char32_t_const, TYPE_QUALIFIER_NONE);