summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2006-10-25 07:29:22 +0000
committerbde <bde@FreeBSD.org>2006-10-25 07:29:22 +0000
commit09347a415ff791e2537dd8e910861b49d37ed61b (patch)
treeb40725647e961bf280510cc5635237d9f2d19704 /contrib
parentc7a2917f38afc6dc5c4a7b482b5c2cb4600b7e6f (diff)
downloadFreeBSD-src-09347a415ff791e2537dd8e910861b49d37ed61b.zip
FreeBSD-src-09347a415ff791e2537dd8e910861b49d37ed61b.tar.gz
Fixed -mprofiler-epilogue. The garbage collector apparently doesn't
understand that non-local variables can never be collected, and when it collected the static variable for mexitcount_libfunc, gcc aborted on the next use of this variable. This quick fix is to reinitialize the variable on every use and depend on garbage collection recovering the small amount of memory wasted by this, and not worry by the small amount of time wasted by this. It would be better to initialize the variable together with most of the other libfuncs in optabs.c and depend on whatever magic is there to prevent its collection, but we initialize it here to avoid taking at least 2 more files off the vendor branch.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/gcc/function.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/contrib/gcc/function.c b/contrib/gcc/function.c
index 4ff8f6a..8679729 100644
--- a/contrib/gcc/function.c
+++ b/contrib/gcc/function.c
@@ -7129,7 +7129,9 @@ expand_function_end (void)
if (!initialized)
{
mexitcount_libfunc = init_one_libfunc (".mexitcount");
+#if 0 /* Turn this off to prevent erroneous garbage collection. */
initialized = 1;
+#endif
}
emit_library_call (mexitcount_libfunc, LCT_NORMAL, VOIDmode, 0);
}
OpenPOWER on IntegriCloud