PATCH, boehm-gc: silence warning
Ben Elliston <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel,gmane.comp.gcc.patches |
|---|---|
| Message-ID | <1259555306.23081.4.camel@bapbop> |
When compiling mark_rts.c, GCC warns about taking the address of a local variable. This is not a bug, but an explicit hack to get the approximate address of a new stack frame, to calculate the limits of the current frame. There is a cleaner way to do this with GCC: use __builtin_frame_address. My reading of the code suggests that this will work just as well. Tested with a bootstrap on x86_64-linux and a full regression testsuite run, including make check-target-boehm-gc. Okay for mainline? 2009-11-30 Ben Elliston <[email protected]> * mark_rts.c (GC_approx_sp): Use __builtin_frame_address when compiling with GCC rather than taking the address of a local variable. Index: mark_rts.c =================================================================== --- mark_rts.c (revision 154749) +++ mark_rts.c (working copy) @@ -376,7 +376,13 @@ ptr_t GC_approx_sp() # ifdef _MSC_VER # pragma warning(disable:4172) # endif - return((ptr_t)(&dummy)); +#ifdef __GNUC__ + /* Eliminate a warning from GCC about taking the address of a + local variable. */ + return __builtin_frame_address (0); +#else + return ((ptr_t)(&dummy)); +#endif /* __GNUC__ */ # ifdef _MSC_VER # pragma warning(default:4172) # endif