diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6f6e6baee6013ad985e726e9e0096d90ae3b3577..022ce04d000c3be73a0aae72b27d7f9da5c8e2e6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valops.c (value_slice): Check for not allocated or not
+	associated values.
+
 2019-06-10  Tom de Vries  <tdevries@suse.de>
 
 	PR gdb/24618
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7cc712ba560d54bc8ad9d1d9a01ae44d12272d27..33ae2f4925f677758ffbb848bfdf85606d2126ce 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-06-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/vla-sizeof.exp: Update expected results.
+
 2019-06-06  Amos Bird  <amosbird@gmail.com>
 
 	* gdb.base/annota1.exp (thread_switch): Add test for
diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
index b6fdaebbf5156373c3d331713649a1262fdfd9c0..4fe6938445cb34669602393ea6e861ff6b40b5e9 100644
--- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp
+++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp
@@ -32,7 +32,7 @@ gdb_test "print sizeof(vla1)" " = 0" "print sizeof non-allocated vla1"
 gdb_test "print sizeof(vla1(3,2,1))" \
     "no such vector element \\(vector not allocated\\)" \
     "print sizeof non-allocated indexed vla1"
-gdb_test "print sizeof(vla1(3:4,2,1))" "slice out of range" \
+gdb_test "print sizeof(vla1(3:4,2,1))" "array not allocated" \
     "print sizeof non-allocated sliced vla1"
 
 # Try to access value in allocated VLA
@@ -49,7 +49,7 @@ gdb_test "print sizeof(pvla)" " = 0" "print sizeof non-associated pvla"
 gdb_test "print sizeof(pvla(3,2,1))" \
     "no such vector element \\(vector not associated\\)" \
     "print sizeof non-associated indexed pvla"
-gdb_test "print sizeof(pvla(3:4,2,1))" "slice out of range" \
+gdb_test "print sizeof(pvla(3:4,2,1))" "array not associated" \
     "print sizeof non-associated sliced pvla"
 
 # Try to access values in pointer to VLA and compare them
diff --git a/gdb/valops.c b/gdb/valops.c
index fd92a4d165575086d9f00e4c5fa8787c427c3691..cbf2eccde3e46d65ee70ecb06e6fb4ae9f2bc8d8 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3801,6 +3801,11 @@ value_slice (struct value *array, int lowbound, int length)
       && TYPE_CODE (array_type) != TYPE_CODE_STRING)
     error (_("cannot take slice of non-array"));
 
+  if (type_not_allocated (array_type))
+    error (_("array not allocated"));
+  if (type_not_associated (array_type))
+    error (_("array not associated"));
+
   range_type = TYPE_INDEX_TYPE (array_type);
   if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
     error (_("slice from bad array or bitstring"));