diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 75197255a5424513503097aee30adfd79c528e95..f85e2ebfa6b801a84ff12ce89212224803eff448 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-01  Dominique d'Humieres  <dominiq@lps.ens.fr>
+
+	PR fortran/54788
+	* array.c (spec_size): handle the case as==NULL.
+
 2013-06-26  Tobias Burnus  <burnus@net-b.de>
 
 	PR fortran/29800
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index c6b8eb9f96a7b6a9693a155e97a11b3966bd3075..f07bc64dbcaa2d972356ed1aa9ada1f5b7a5f768 100644
--- a/gcc/fortran/array.c
+++ b/gcc/fortran/array.c
@@ -2084,7 +2084,7 @@ spec_size (gfc_array_spec *as, mpz_t *result)
   mpz_t size;
   int d;
 
-  if (as->type == AS_ASSUMED_RANK)
+  if (!as || as->type == AS_ASSUMED_RANK)
     return false;
 
   mpz_init_set_ui (*result, 1);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5c09364a80a38b912746bee377b45697ad4d48c5..2a0fa8112823a610cbc412e0b10855a2e9f90a52 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-01  Dominique d'Humieres  <dominiq@lps.ens.fr>
+
+	PR fortran/54788
+	* gfortran.dg/pointer_remapping_8.f90: New.
+
 2013-06-28  Ed Smith-Rowland  <3dw4rd@verizon.net>
 
 	* g++.dg/cpp0x/udlit-nospace-neg.C: Adjust.
@@ -38,11 +43,11 @@
 
 2013-06-28  Kirill Yukhin  <kirill.yukhin@intel.com>
 
-        * gcc.target/i386/bmi-1.c: Extend with new instrinsic.
-        Fix scan patterns.
-        * gcc.target/i386/bmi-1.c: Ditto.
-        * gcc.target/i386/bmi-bextr-4.c: New.
-        * gcc.target/i386/bmi-bextr-5.c: Ditto.
+	* gcc.target/i386/bmi-1.c: Extend with new instrinsic.
+	Fix scan patterns.
+	* gcc.target/i386/bmi-1.c: Ditto.
+	* gcc.target/i386/bmi-bextr-4.c: New.
+	* gcc.target/i386/bmi-bextr-5.c: Ditto.
 
 2013-06-28  Paolo Carlini  <paolo.carlini@oracle.com>
 
diff --git a/gcc/testsuite/gfortran.dg/pointer_remapping_8.f90 b/gcc/testsuite/gfortran.dg/pointer_remapping_8.f90
new file mode 100644
index 0000000000000000000000000000000000000000..94fe6c553ef395706ebab33ea88b40db173fa207
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pointer_remapping_8.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+!
+! PR 54788 ICE on pointer-array element assignment
+!
+program bug
+  integer, pointer :: a(:)
+  integer :: b
+  allocate(a(0:0))
+  a(0:0) => b ! { dg-error "Rank remapping target must be rank 1 or simply contiguous" }
+end