From: Richard Henderson <rth@twiddle.net>

Apparently gcc 4.0 complains about "({ 0; });", which leads to -Werror
breakage in one of the alpha oprofile modules.

One might could argue that this is a gcc bug, in that statement-expressions
should be considered to be function-like rather than statement-like for the
purposes of this warning.  But it's just as easy to use an inline function
in the first place, side-stepping the issue.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 include/asm-alpha/smp.h |    9 +++++++--
 include/linux/smp.h     |   20 ++++++++++++++++----
 2 files changed, 23 insertions(+), 6 deletions(-)

diff -puN include/asm-alpha/smp.h~alpha-fix-statement-with-no-effect-warnings include/asm-alpha/smp.h
--- devel/include/asm-alpha/smp.h~alpha-fix-statement-with-no-effect-warnings	2005-07-28 01:05:53.000000000 -0700
+++ devel-akpm/include/asm-alpha/smp.h	2005-07-28 01:05:53.000000000 -0700
@@ -50,11 +50,16 @@ extern cpumask_t cpu_online_map;
 extern int smp_num_cpus;
 #define cpu_possible_map	cpu_present_mask
 
-int smp_call_function_on_cpu(void (*func) (void *info), void *info,int retry, int wait, cpumask_t cpu);
+int smp_call_function_on_cpu(void (*) (void *), void *, int, int, cpumask_t);
 
 #else /* CONFIG_SMP */
 
-#define smp_call_function_on_cpu(func,info,retry,wait,cpu)    ({ 0; })
+static inline int
+smp_call_function_on_cpu (void (*func) (void *), void *info, int retry,
+			  int wait, cpumask_t cpu)
+{
+	return 0;
+}
 
 #endif /* CONFIG_SMP */
 
diff -puN include/linux/smp.h~alpha-fix-statement-with-no-effect-warnings include/linux/smp.h
--- devel/include/linux/smp.h~alpha-fix-statement-with-no-effect-warnings	2005-07-28 01:05:53.000000000 -0700
+++ devel-akpm/include/linux/smp.h	2005-07-28 01:05:53.000000000 -0700
@@ -94,11 +94,23 @@ void smp_prepare_boot_cpu(void);
  */
 #define raw_smp_processor_id()			0
 #define hard_smp_processor_id()			0
-#define smp_call_function(func,info,retry,wait)	({ 0; })
-#define on_each_cpu(func,info,retry,wait)	({ func(info); 0; })
-static inline void smp_send_reschedule(int cpu) { }
 #define num_booting_cpus()			1
-#define smp_prepare_boot_cpu()			do {} while (0)
+
+static inline int smp_call_function(void (*func) (void *), void *info,
+				    int retry, int wait)
+{
+	return 0;
+}
+
+static inline int on_each_cpu(void (*func) (void *), void *info,
+			      int retry, int wait)
+{
+	func(info);
+	return 0;
+}
+
+static inline void smp_send_reschedule(int cpu) { }
+static inline void smp_prepare_boot_cpu(void) { }
 
 #endif /* !SMP */
 
_