diff --git a/backends/ChangeLog b/backends/ChangeLog
index 6ea3dc4..7f0d1c0 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-21  Chih-Hung Hsieh  <chh@google.com>
+
+	* ia64_retval.c (hfa_type): Move nested function 'hfa' to file scope.
+	* aarch64_regs.c (aarch64_register_info): Move nested function 'regtype'
+	to file scope.
+
 2015-10-16  Mark Wielaard  <mjw@redhat.com>
 
 	* ppc_symbol.c (ppc_check_special_symbol): Also allow _SDA_BASE_
diff --git a/backends/aarch64_regs.c b/backends/aarch64_regs.c
index 7a8a678..23014bf 100644
--- a/backends/aarch64_regs.c
+++ b/backends/aarch64_regs.c
@@ -38,6 +38,25 @@
 #define BACKEND aarch64_
 #include "libebl_CPU.h"
 
+__attribute__ ((format (printf, 7, 8)))
+static ssize_t
+do_regtype (const char *setname, int type,
+           const char **setnamep, int *typep,
+           char *name, size_t namelen, const char *fmt, ...)
+{
+  *setnamep = setname;
+  *typep = type;
+
+  va_list ap;
+  va_start (ap, fmt);
+  int s = vsnprintf (name, namelen, fmt, ap);
+  va_end(ap);
+
+  if (s < 0 || (unsigned) s >= namelen)
+    return -1;
+  return s + 1;
+}
+
 ssize_t
 aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
 		       int regno, char *name, size_t namelen,
@@ -47,26 +66,13 @@
   if (name == NULL)
     return 128;
 
-  __attribute__ ((format (printf, 3, 4)))
-  ssize_t
-  regtype (const char *setname, int type, const char *fmt, ...)
-  {
-    *setnamep = setname;
-    *typep = type;
-
-    va_list ap;
-    va_start (ap, fmt);
-    int s = vsnprintf (name, namelen, fmt, ap);
-    va_end(ap);
-
-    if (s < 0 || (unsigned) s >= namelen)
-      return -1;
-    return s + 1;
-  }
 
   *prefix = "";
   *bits = 64;
 
+#define regtype(setname, type, ...) \
+    do_regtype(setname, type, setnamep, typep, name, namelen, __VA_ARGS__)
+
   switch (regno)
     {
     case 0 ... 30:
diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c
index b5928c5..dcd5f28 100644
--- a/backends/ia64_retval.c
+++ b/backends/ia64_retval.c
@@ -89,6 +89,17 @@
 #define nloc_aggregate 1
 
 
+static inline int
+compute_hfa (const Dwarf_Op *loc, int nregs,
+	     const Dwarf_Op **locp, int fpregs_used)
+{
+  if (fpregs_used == 0)
+    *locp = loc;
+  else if (*locp != loc)
+    return 9;
+  return fpregs_used + nregs;
+}
+
 /* If this type is an HFA small enough to be returned in FP registers,
    return the number of registers to use.  Otherwise 9, or -1 for errors.  */
 static int
@@ -100,15 +111,6 @@
      If we find a datum that's not the same FP type as the first datum, punt.
      If we count more than eight total homogeneous FP data, punt.  */
 
-  inline int hfa (const Dwarf_Op *loc, int nregs)
-    {
-      if (fpregs_used == 0)
-	*locp = loc;
-      else if (*locp != loc)
-	return 9;
-      return fpregs_used + nregs;
-    }
-
   int tag = DWARF_TAG_OR_RETURN (typedie);
   switch (tag)
     {
@@ -123,6 +125,7 @@
 						 &attr_mem), &encoding) != 0)
 	return -1;
 
+#define hfa(loc, nregs) compute_hfa(loc, nregs, locp, fpregs_used)
       switch (encoding)
 	{
 	case DW_ATE_float:
