From 2fc5ecb5a8bb3ebc7fad471a0dbd40939c6885e0 Mon Sep 17 00:00:00 2001
From: Ben Elliston <bje@au.ibm.com>
Date: Mon, 30 Nov 2009 10:19:20 +0000
Subject: [PATCH] mark_rts.c (GC_approx_sp): Use __builtin_frame_address when
 compiling with GCC rather than taking the...

	* mark_rts.c (GC_approx_sp): Use __builtin_frame_address when
	compiling with GCC rather than taking the address of a local
	variable.

From-SVN: r154771
---
 boehm-gc/ChangeLog  | 6 ++++++
 boehm-gc/mark_rts.c | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 5b615d956a42..03e515895809 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
 2009-11-30  Ben Elliston  <bje@au.ibm.com>
 
 	* os_dep.c: Use the POSIX signal API in preference to the BSD API.
diff --git a/boehm-gc/mark_rts.c b/boehm-gc/mark_rts.c
index 4074879a71aa..7a9fb8f2b721 100644
--- a/boehm-gc/mark_rts.c
+++ b/boehm-gc/mark_rts.c
@@ -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
-- 
GitLab