diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7df0ee2d4bc..a35b0e8f739 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-31  Richard Henderson  <rth@redhat.com>
+
+	* stor-layout.c (initialize_sizetypes): Handle unsigned short.
+	* tree.c (build_common_tree_nodes): Likewise.
+
 2011-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
 
 	PR target/49880
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index fee26e6ce9c..8a5c48de920 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 30ff80f152f..c474b7344ea 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 ();