diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 632fcca13a1..450862182f3 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,7 @@
+2014-08-06  Gary Benson  <gbenson@redhat.com>
+
+	* regcache.c (init_register_cache): Move conditionals inside if.
+
 2014-08-06  Gary Benson  <gbenson@redhat.com>
 
 	* linux-low.c (linux_supports_non_stop): Use target_is_async_p.
diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c
index bed10b48a0e..db99f8c0fa9 100644
--- a/gdb/gdbserver/regcache.c
+++ b/gdb/gdbserver/regcache.c
@@ -117,9 +117,9 @@ init_register_cache (struct regcache *regcache,
 		     const struct target_desc *tdesc,
 		     unsigned char *regbuf)
 {
-#ifndef IN_PROCESS_AGENT
   if (regbuf == NULL)
     {
+#ifndef IN_PROCESS_AGENT
       /* Make sure to zero-initialize the register cache when it is
 	 created, in case there are registers the target never
 	 fetches.  This way they'll read as zero instead of
@@ -129,13 +129,11 @@ init_register_cache (struct regcache *regcache,
       regcache->registers_owned = 1;
       regcache->register_status = xcalloc (1, tdesc->num_registers);
       gdb_assert (REG_UNAVAILABLE == 0);
+#else
+      fatal ("init_register_cache: can't allocate memory from the heap");
+#endif
     }
   else
-#else
-  if (regbuf == NULL)
-    fatal ("init_register_cache: can't allocate memory from the heap");
-  else
-#endif
     {
       regcache->tdesc = tdesc;
       regcache->registers = regbuf;