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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.