From 2fc5ecb5a8bb3ebc7fad471a0dbd40939c6885e0 Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Mon, 30 Nov 2009 10:19:20 +0000 Subject: 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(-) (limited to 'boehm-gc') diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 5b615d9..03e5158 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,5 +1,11 @@ 2009-11-30 Ben Elliston + * 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 + * os_dep.c: Use the POSIX signal API in preference to the BSD API. Generate a compilation error if neither the POSIX nor BSD APIs can be detected. diff --git a/boehm-gc/mark_rts.c b/boehm-gc/mark_rts.c index 4074879..7a9fb8f 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 -- cgit v1.1