Some multilibs for H8 have 16-bit Pmode and 32-bit "int". Which makes size_t be unsigned short.
r~
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7df0ee2..a35b0e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-07-31 Richard Henderson <r...@redhat.com> + + * stor-layout.c (initialize_sizetypes): Handle unsigned short. + * tree.c (build_common_tree_nodes): Likewise. + 2011-07-31 Kaz Kojima <kkoj...@gcc.gnu.org> PR target/49880 diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index fee26e6..8a5c48d 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -2203,6 +2203,8 @@ initialize_sizetypes (void) precision = LONG_TYPE_SIZE; else if (strcmp (SIZE_TYPE, "long long unsigned int") == 0) precision = LONG_LONG_TYPE_SIZE; + else if (strcmp (SIZE_TYPE, "short unsigned int") == 0) + precision = SHORT_TYPE_SIZE; else gcc_unreachable (); diff --git a/gcc/tree.c b/gcc/tree.c index 30ff80f..c474b73 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -9228,6 +9228,8 @@ build_common_tree_nodes (bool signed_char, bool short_double) size_type_node = long_unsigned_type_node; else if (strcmp (SIZE_TYPE, "long long unsigned int") == 0) size_type_node = long_long_unsigned_type_node; + else if (strcmp (SIZE_TYPE, "short unsigned int") == 0) + size_type_node = short_unsigned_type_node; else gcc_unreachable ();