This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
PATCH, boehm-gc: silence warning
- From: Ben Elliston <bje at au1 dot ibm dot com>
- To: java <java at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Cc: aph at redhat dot com
- Date: Mon, 30 Nov 2009 15:28:26 +1100
- Subject: PATCH, boehm-gc: silence warning
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