From: Michal Rokos Date: 2003-01-16T21:22:01+09:00 Subject: Re: [Patch] Wall compilation This is a multi-part message in MIME format. --------------040800030003060507000405 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi, nobu.nokada@softhome.net wrote: > At Thu, 16 Jan 2003 15:38:09 +0900, > Michal Rokos wrote: > >>>> If you read the patch, please note change in defines.h >>>> FLUSH_REGISTER_WINDOWS is now defined everytime, but >>>> compilation with -O2 handles empty proc body quite well >>>> (ie. no code - no useless jumps). >>> >>>Is it needed? >> >> Try -Wall compilation. It warns badly (gcc-3.2.2) about the >> code has no effect and so on, which looks ugly to me. This >> patch has the same result (code has no effect), but without >> warnings from compiler. > > >>>What about ((void)0) ? >> >> Again - gcc warns about 'code has no effect'... > > > I've used this (void)0 trick many times, we have to replace > them all to make gcc 3.2.2 quiet? > > Anyhow, what it defines assert() in if NDEBUG? You're right - as usually :)) Thank you for giving me a lesson :) Here's a small patch that does what nobu says. Michal --------------040800030003060507000405 Content-Type: text/plain; name="RubyWall2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="RubyWall2.diff" Index: defines.h =================================================================== RCS file: /src/ruby/defines.h,v retrieving revision 1.26 diff -u -p -r1.26 defines.h --- defines.h 16 Jan 2003 07:38:39 -0000 1.26 +++ defines.h 16 Jan 2003 12:15:03 -0000 @@ -137,10 +137,10 @@ void xfree _((void*)); #define EXTERN extern #endif +#if defined(sparc) || defined(__sparc__) static inline void flush_register_windows(void) { -#if defined(sparc) || defined(__sparc__) # if defined(__sparc_v9__) || defined(__arch64__) asm volatile ("flushw" : :); # elif defined(linux) || defined(__linux__) @@ -148,9 +148,11 @@ flush_register_windows(void) # else /* Solaris, OpenBSD, NetBSD, etc. */ asm volatile ("ta 0x03"); # endif /* trap always to flush register windows if we are on a Sparc system */ -#endif } -#define FLUSH_REGISTER_WINDOWS flush_register_windows() +# define FLUSH_REGISTER_WINDOWS flush_register_windows() +#else +# define FLUSH_REGISTER_WINDOWS ((void)0) +#endif #if defined(DOSISH) #define PATH_SEP ";" Index: eval.c =================================================================== RCS file: /src/ruby/eval.c,v retrieving revision 1.386 diff -u -p -r1.386 eval.c --- eval.c 16 Jan 2003 07:38:39 -0000 1.386 +++ eval.c 16 Jan 2003 12:16:26 -0000 @@ -938,7 +938,7 @@ static void call_trace_func _((char*,NOD #define SET_CURRENT_SOURCE() (ruby_sourcefile = ruby_current_node->nd_file, \ ruby_sourceline = nd_line(ruby_current_node)) #else -#define SET_CURRENT_SOURCE() do { } while (0) +#define SET_CURRENT_SOURCE() ((void)0) #endif void --------------040800030003060507000405--