diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc
index 45af074..af83588 100644
--- a/gcc/c-family/c-attribs.cc
+++ b/gcc/c-family/c-attribs.cc
@@ -584,7 +584,9 @@ const struct attribute_spec c_common_gnu_attributes[] =
 
 const struct scoped_attribute_specs c_common_gnu_attribute_table =
 {
-  "gnu", c_common_gnu_attributes
+  "gnu",
+  array_slice<const attribute_spec>(c_common_gnu_attributes,
+				    ARRAY_SIZE (c_common_gnu_attributes))
 };
 
 /* Give the specifications for the format attributes, used by C and all
@@ -603,7 +605,9 @@ const struct attribute_spec c_common_format_attributes[] =
 
 const struct scoped_attribute_specs c_common_format_attribute_table =
 {
-  "gnu", c_common_format_attributes
+  "gnu",
+  array_slice<const attribute_spec>(c_common_format_attributes,
+				    ARRAY_SIZE (c_common_format_attributes))
 };
 
 /* Returns TRUE iff the attribute indicated by ATTR_ID takes a plain
diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index 248d1bb..a6984b0 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -4653,7 +4653,8 @@ static const attribute_spec std_attributes[] =
 
 const scoped_attribute_specs std_attribute_table =
 {
-  nullptr, std_attributes
+  nullptr, array_slice<const attribute_spec>(std_attributes,
+					     ARRAY_SIZE (std_attributes))
 };
 
 /* Create the predefined scalar types of C,
diff --git a/gcc/c/c-objc-common.h b/gcc/c/c-objc-common.h
index 426d938..021c651 100644
--- a/gcc/c/c-objc-common.h
+++ b/gcc/c/c-objc-common.h
@@ -83,7 +83,8 @@ static const scoped_attribute_specs *const c_objc_attribute_table[] =
 };
 
 #undef LANG_HOOKS_ATTRIBUTE_TABLE
-#define LANG_HOOKS_ATTRIBUTE_TABLE c_objc_attribute_table
+#define LANG_HOOKS_ATTRIBUTE_TABLE \
+array_slice<const scoped_attribute_specs* const> (c_objc_attribute_table, ARRAY_SIZE (c_objc_attribute_table))
 
 #undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN
 #define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN c_dump_tree
diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
index 8776592..50b3425 100644
--- a/gcc/config/i386/i386-options.cc
+++ b/gcc/config/i386/i386-options.cc
@@ -4171,7 +4171,9 @@ static const attribute_spec ix86_gnu_attributes[] =
 
 const scoped_attribute_specs ix86_gnu_attribute_table =
 {
-  "gnu", ix86_gnu_attributes
+  "gnu",
+  array_slice<const attribute_spec>(ix86_gnu_attributes,
+				    ARRAY_SIZE (ix86_gnu_attributes))
 };
 
 #include "gt-i386-options.h"
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 0f91ee7..400b7cb 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -25981,7 +25981,7 @@ static const scoped_attribute_specs *const ix86_attribute_table[] =
 #define TARGET_LEGITIMIZE_ADDRESS ix86_legitimize_address
 
 #undef TARGET_ATTRIBUTE_TABLE
-#define TARGET_ATTRIBUTE_TABLE ix86_attribute_table
+#define TARGET_ATTRIBUTE_TABLE array_slice<const scoped_attribute_specs* const>(ix86_attribute_table, ARRAY_SIZE (ix86_attribute_table))
 #undef TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P
 #define TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P hook_bool_const_tree_true
 #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h
index b53d11e..a8d12a5 100644
--- a/gcc/cp/cp-objcp-common.h
+++ b/gcc/cp/cp-objcp-common.h
@@ -132,7 +132,7 @@ static const scoped_attribute_specs *const cp_objcp_attribute_table[] =
 };
 
 #undef LANG_HOOKS_ATTRIBUTE_TABLE
-#define LANG_HOOKS_ATTRIBUTE_TABLE cp_objcp_attribute_table
+#define LANG_HOOKS_ATTRIBUTE_TABLE array_slice<const scoped_attribute_specs* const> (cp_objcp_attribute_table, ARRAY_SIZE (cp_objcp_attribute_table))
 
 #undef LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P
 #define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P cp_var_mod_type_p
diff --git a/gcc/cp/tree.cc b/gcc/cp/tree.cc
index e0b9d51..989f36b 100644
--- a/gcc/cp/tree.cc
+++ b/gcc/cp/tree.cc
@@ -5098,7 +5098,9 @@ static const attribute_spec cxx_gnu_attributes[] =
 
 const scoped_attribute_specs cxx_gnu_attribute_table =
 {
-  "gnu", cxx_gnu_attributes
+  "gnu",
+  array_slice<const attribute_spec> (cxx_gnu_attributes,
+				     ARRAY_SIZE (cxx_gnu_attributes))
 };
 
 /* Table of C++ standard attributes.  */
@@ -5126,7 +5128,12 @@ static const attribute_spec std_attributes[] =
     handle_contract_attribute, NULL }
 };
 
-const scoped_attribute_specs std_attribute_table = { nullptr, std_attributes };
+const scoped_attribute_specs std_attribute_table =
+{
+  nullptr,
+  array_slice<const attribute_spec> (std_attributes,
+				     ARRAY_SIZE (std_attributes))
+};
 
 /* Handle an "init_priority" attribute; arguments as in
    struct attribute_spec.handler.  */
diff --git a/gcc/lto/lto-lang.cc b/gcc/lto/lto-lang.cc
index 41de35a..67cea40 100644
--- a/gcc/lto/lto-lang.cc
+++ b/gcc/lto/lto-lang.cc
@@ -140,7 +140,9 @@ static const attribute_spec lto_gnu_attributes[] =
 
 static const scoped_attribute_specs lto_gnu_attribute_table =
 {
-  "gnu", lto_gnu_attributes
+  "gnu",
+  array_slice<const attribute_spec>(lto_gnu_attributes,
+				    ARRAY_SIZE (lto_gnu_attributes))
 };
 
 /* Give the specifications for the format attributes, used by C and all
@@ -158,7 +160,9 @@ static const attribute_spec lto_format_attributes[] =
 
 static const scoped_attribute_specs lto_format_attribute_table =
 {
-  "gnu", lto_format_attributes
+  "gnu",
+  array_slice<const attribute_spec>(lto_format_attributes,
+				    ARRAY_SIZE (lto_format_attributes))
 };
 
 static const scoped_attribute_specs *const lto_attribute_table[] =
@@ -1478,7 +1482,7 @@ static void lto_init_ts (void)
 
 /* Attribute hooks.  */
 #undef LANG_HOOKS_ATTRIBUTE_TABLE
-#define LANG_HOOKS_ATTRIBUTE_TABLE lto_attribute_table
+#define LANG_HOOKS_ATTRIBUTE_TABLE array_slice<const scoped_attribute_specs* const> (lto_attribute_table, ARRAY_SIZE (lto_attribute_table))
 
 #undef LANG_HOOKS_BEGIN_SECTION
 #define LANG_HOOKS_BEGIN_SECTION lto_obj_begin_section
