Regenerating gdbarch.c results in:
  --- gdbarch.c   2018-03-26 23:18:52.
905548891 +0100
  +++ new-gdbarch.c       2018-04-09 15:32:30.
006712207 +0100
  @@ -44,7 +44,7 @@
   #include "reggroups.h"
   #include "osabi.h"
   #include "gdb_obstack.h"
  -#include "observable.h"
  +#include "observer.h"
   #include "regcache.h"
   #include "objfiles.h"
   #include "auxv.h"
  @@ -5457,7 +5457,7 @@
     gdb_assert (new_gdbarch != NULL);
     gdb_assert (new_gdbarch->initialized_p);
     current_inferior ()->gdbarch = new_gdbarch;
  -  gdb::observers::architecture_changed.notify (new_gdbarch);
  +  observer_notify_architecture_changed (new_gdbarch);
     registers_changed ();
   }
Clearly commit 
76727919ceb5 ("Convert observers to C++") edited
gdbarch.c directly instead of gdbarch.sh.  This fixes it.
gdb/ChangeLog:
2018-04-09  Pedro Alves  <palves@redhat.com>
	* gdbarch.sh: Include "observable.h" instead of "observer.h".
	(set_target_gdbarch): Call
	gdb::observers::architecture_changed.notify instead of
	observer_notify_architecture_changed.
 
+2018-04-09  Pedro Alves  <palves@redhat.com>
+
+       * gdbarch.sh: Include "observable.h" instead of "observer.h".
+       (set_target_gdbarch): Call
+       gdb::observers::architecture_changed.notify instead of
+       observer_notify_architecture_changed.
+
 2018-04-07  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * tracepoint.c (struct current_traceframe_cleanup): Remove.
 
 #include "reggroups.h"
 #include "osabi.h"
 #include "gdb_obstack.h"
-#include "observer.h"
+#include "observable.h"
 #include "regcache.h"
 #include "objfiles.h"
 #include "auxv.h"
   gdb_assert (new_gdbarch != NULL);
   gdb_assert (new_gdbarch->initialized_p);
   current_inferior ()->gdbarch = new_gdbarch;
-  observer_notify_architecture_changed (new_gdbarch);
+  gdb::observers::architecture_changed.notify (new_gdbarch);
   registers_changed ();
 }