summaryrefslogtreecommitdiff
path: root/libguile/numbers.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/numbers.c')
-rw-r--r--libguile/numbers.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libguile/numbers.c b/libguile/numbers.c
index 53a40a0bd..ebdacdc8f 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -3015,6 +3015,13 @@ scm_make_real (double x)
{
SCM z;
z = scm_double_cell (scm_tc16_real, 0, 0, 0);
+
+ /*
+ scm_double_cell is inlined. strict C aliasing rules say that it's
+ OK to interchange the initialization above and the one below. We
+ don't want that, of course.
+ */
+ scm_remember_1 (z);
SCM_REAL_VALUE (z) = x;
return z;
}