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

AltStyle によって変換されたページ (->オリジナル) /