While looking at the MIPS uclibc build, I notice there are a lot of warnings
about variables being set but not used.  This has been brought up before:

  http://lists.uclibc.org/pipermail/uclibc/2012-April/046639.html

But it doesn't look like anyone has submitted a patch so here is a patch
I created to get rid of the MIPS specific warnings.  Is this something that
could be checked in?

Also, I was wondering if anyone knows why INTERNAL_SYSCALL_DECL (and other
INTERNAL_SYSCALL_* and internal_syscall* macros) are defined in both
libc/sysdeps/linux/mips/bits/syscalls.h and libc/sysdeps/linux/mips/sysdep.h?

Is one of these the 'right' place to define these macros?  Should one
of them be including the other?

Steve Ellcey
sell...@mips.com


diff --git a/libc/sysdeps/linux/mips/bits/atomic.h 
b/libc/sysdeps/linux/mips/bits/atomic.h
index 9a9f60f..e8d9264 100644
--- a/libc/sysdeps/linux/mips/bits/atomic.h
+++ b/libc/sysdeps/linux/mips/bits/atomic.h
@@ -135,22 +135,22 @@ typedef uintmax_t uatomic_max_t;
 /* For all "bool" routines, we return FALSE if exchange succesful.  */
 
 #define __arch_compare_and_exchange_bool_8_int(mem, new, old, rel, acq)        
\
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)) ; int __cmp;                
\
    __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq);     \
    !__cmp; })
 
 #define __arch_compare_and_exchange_bool_16_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq);    \
    !__cmp; })
 
 #define __arch_compare_and_exchange_bool_32_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq);    \
    !__cmp; })
 
 #define __arch_compare_and_exchange_bool_64_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq);    \
    !__cmp; })
 
@@ -158,22 +158,22 @@ typedef uintmax_t uatomic_max_t;
    successful or not.  */
 
 #define __arch_compare_and_exchange_val_8_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq);     \
    (__typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_16_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq);    \
    (__typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_32_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq);    \
    (__typeof (*mem))__prev; })
 
 #define __arch_compare_and_exchange_val_64_int(mem, new, old, rel, acq) \
-({ __typeof (*mem) __prev; int __cmp;                                  \
+({ __typeof (*mem) __prev __attribute__ ((unused)); int __cmp;         \
    __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq);    \
    (__typeof (*mem))__prev; })
 
diff --git a/libc/sysdeps/linux/mips/bits/syscalls.h 
b/libc/sysdeps/linux/mips/bits/syscalls.h
index 944d038..53765a9 100644
--- a/libc/sysdeps/linux/mips/bits/syscalls.h
+++ b/libc/sysdeps/linux/mips/bits/syscalls.h
@@ -29,7 +29,7 @@
        }                                                               \
      result_var; })
 
-#define INTERNAL_SYSCALL_DECL(err) long err
+#define INTERNAL_SYSCALL_DECL(err) long err __attribute__ ((unused))
 
 #define INTERNAL_SYSCALL_ERROR_P(val, err)   ((long) (err))
 
diff --git a/libc/sysdeps/linux/mips/sysdep.h b/libc/sysdeps/linux/mips/sysdep.h
index 46b6c53..b553333 100644
--- a/libc/sysdeps/linux/mips/sysdep.h
+++ b/libc/sysdeps/linux/mips/sysdep.h
@@ -144,7 +144,7 @@ L(syse1):
      result_var; })
 
 #undef INTERNAL_SYSCALL_DECL
-#define INTERNAL_SYSCALL_DECL(err) long err
+#define INTERNAL_SYSCALL_DECL(err) long err __attribute__ ((unused))
 
 #undef INTERNAL_SYSCALL_ERROR_P
 #define INTERNAL_SYSCALL_ERROR_P(val, err)   ((long) (err))
diff --git a/libpthread/nptl/sysdeps/mips/tls.h 
b/libpthread/nptl/sysdeps/mips/tls.h
index c522f21..b82bdc9 100644
--- a/libpthread/nptl/sysdeps/mips/tls.h
+++ b/libpthread/nptl/sysdeps/mips/tls.h
@@ -120,7 +120,7 @@ typedef struct
    operation can cause a failure 'errno' must not be touched.  */
 # define TLS_INIT_TP(tcbp, secondcall) \
   ({ INTERNAL_SYSCALL_DECL (err);                                      \
-     long result_var;                                                  \
+     long result_var  __attribute__((unused));                         \
      result_var = INTERNAL_SYSCALL (set_thread_area, err, 1,           \
                                    (char *) (tcbp) + TLS_TCB_OFFSET);  \
      INTERNAL_SYSCALL_ERROR_P (result_var, err)                                
\

_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to