PATCH, boehm-gc: silence warning
Ben Elliston
bje@au1.ibm.com
Mon Nov 30 04:28:00 GMT 2009
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 <bje@au.ibm.com>
* 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
More information about the Java
mailing list