summaryrefslogtreecommitdiffstats
path: root/backends
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2015-10-21 14:36:25 -0700
committerMark Wielaard <mjw@redhat.com>2015-11-03 15:20:22 +0100
commit860d4312e61ceef1510035dfb851327246705785 (patch)
tree5c4226d2e95c63f75900e26bcd05dc1d4d29610f /backends
parent528cb45fc99a1f402ac153891ac7c007921699ef (diff)
Move nested functions in backends to file scope.
* backends/aarch64_regs.c and backends/ia64_retval.c should now compile with clang. Signed-off-by: Chih-Hung Hsieh <chh@google.com>
Diffstat (limited to 'backends')
-rw-r--r--backends/ChangeLog6
-rw-r--r--backends/aarch64_regs.c38
-rw-r--r--backends/ia64_retval.c21
3 files changed, 40 insertions, 25 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 6ea3dc4b..7f0d1c00 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 7a8a6780..23014bfc 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 @@ aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
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 b5928c58..dcd5f28d 100644
--- a/backends/ia64_retval.c
+++ b/backends/ia64_retval.c
@@ -89,6 +89,17 @@ static const Dwarf_Op loc_aggregate[] =
#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 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size,
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 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size,
&attr_mem), &encoding) != 0)
return -1;
+#define hfa(loc, nregs) compute_hfa(loc, nregs, locp, fpregs_used)
switch (encoding)
{
case DW_ATE_float: