[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1317: fibc hangs when compiled with -O3 or -O4
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1317: fibc hangs when compiled with -O3 or -O4 |
Date: |
Sat, 17 Sep 2016 19:17:42 -0000 |
#1317: fibc hangs when compiled with -O3 or -O4
---------------------------------+------------------------
Reporter: mario | Owner:
Type: defect | Status: new
Priority: major | Milestone: 4.12.0
Component: compiler | Version: 4.11.0
Resolution: | Keywords: fibc, hang
Estimated difficulty: hard |
---------------------------------+------------------------
Comment (by sjamaan):
Looks like there's a problem with the way we restart the continuation (or
something?):
{{{
#!scm
(foreign-declare
"C_word print2(C_word x, C_word y) {\n"
" printf(\"add %ld + %ld\\n\", C_unfix(x), C_unfix(y)); "
" return C_SCHEME_FALSE;"
"}\n")
(foreign-declare
"C_word print1(C_word x) {\n"
" printf(\"fibc %ld\\n\", C_unfix(x)); "
" return C_SCHEME_FALSE;"
"}\n")
(define (add x y)
(##core#inline "print2" x y)
(if (zero? y)
x
(add (add1 x) (sub1 y))))
(define (fib x)
(##core#inline "print1" x)
(if (or (= x 0) (= x 1))
x
(add (fib (- x 1))
(fib (- x 2)))))
(print (fib 30))
}}}
When running this with -O2 versus -O3, I get a diff that looks like this:
{{{
--- working 2016-09-17 21:00:42.183955883 +0200
+++ broken 2016-09-17 21:10:51.879932979 +0200
@@ -6423,6 +6423,7 @@
fibc 0
add 1 + 0
add 2 + 1
+add 2 + 1
add 3 + 0
add 5 + 3
add 6 + 2
@@ -8200,6 +8201,14 @@
add 94 + 50
add 95 + 49
add 96 + 48
+add 89 + 55
+add 90 + 54
+add 91 + 53
+add 92 + 52
+add 93 + 51
+add 94 + 50
+add 95 + 49
+add 96 + 48
add 97 + 47
add 98 + 46
add 99 + 45
@@ -13708,6 +13717,23 @@
add 158 + 75
add 159 + 74
add 160 + 73
+add 144 + 89
+add 145 + 88
+add 146 + 87
+add 147 + 86
+add 148 + 85
+add 149 + 84
+add 150 + 83
+add 151 + 82
+add 152 + 81
+add 153 + 80
+add 154 + 79
+add 155 + 78
+add 156 + 77
+add 157 + 76
+add 158 + 75
+add 159 + 74
+add 160 + 73
add 161 + 72
add 162 + 71
add 163 + 70
@@ -19312,6 +19338,9 @@
fibc 4
fibc 3
fibc 2
+fibc 4
+fibc 3
+fibc 2
fibc 1
fibc 0
add 1 + 0
@@ -21163,6 +21192,9 @@
fibc 4
fibc 3
fibc 2
+fibc 4
+fibc 3
+fibc 2
fibc 1
fibc 0
add 1 + 0
@@ -25423,6 +25455,12 @@
add 37 + 18
add 38 + 17
add 39 + 16
+add 34 + 21
+add 35 + 20
+add 36 + 19
+add 37 + 18
+add 38 + 17
+add 39 + 16
add 40 + 15
add 41 + 14
add 42 + 13
@@ -30755,6 +30793,7 @@
add 1 + 1
add 2 + 0
fibc 2
+fibc 2
fibc 1
fibc 0
add 1 + 0
@@ -36066,6 +36105,25 @@
add 50 + 5
add 51 + 4
add 52 + 3
+add 34 + 21
+add 35 + 20
+add 36 + 19
+add 37 + 18
+add 38 + 17
+add 39 + 16
+add 40 + 15
+add 41 + 14
+add 42 + 13
+add 43 + 12
+add 44 + 11
+add 45 + 10
+add 46 + 9
+add 47 + 8
+add 48 + 7
+add 49 + 6
+add 50 + 5
+add 51 + 4
+add 52 + 3
add 53 + 2
add 54 + 1
add 55 + 0
@@ -43958,6 +44016,14 @@
add 26 + 8
add 27 + 7
add 28 + 6
+add 21 + 13
+add 22 + 12
+add 23 + 11
+add 24 + 10
+add 25 + 9
+add 26 + 8
+add 27 + 7
+add 28 + 6
add 29 + 5
add 30 + 4
add 31 + 3
@@ -58712,6 +58778,11 @@
add 15 + 6
add 16 + 5
add 17 + 4
+add 13 + 8
+add 14 + 7
+add 15 + 6
+add 16 + 5
+add 17 + 4
add 18 + 3
add 19 + 2
add 20 + 1
@@ -65949,6 +66020,1961 @@
add 5178 + 1587
add 5179 + 1586
add 5180 + 1585
+add 4181 + 2584
+add 4182 + 2583
+add 4183 + 2582
+add 4184 + 2581
+add 4185 + 2580
+add 4186 + 2579
+add 4187 + 2578
+add 4188 + 2577
+add 4189 + 2576
+add 4190 + 2575
+add 4191 + 2574
+add 4192 + 2573
+add 4193 + 2572
+add 4194 + 2571
}}}
And so forth....
--
Ticket URL: <https://bugs.call-cc.org/ticket/1317#comment:3>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.