aboutsummaryrefslogtreecommitdiffhomepage
path: root/grammar/tacextend.mlp
diff options
context:
space:
mode:
authorGravatar Paul Steckler <steck@stecksoft.com>2017-03-20 12:21:12 -0400
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-03-20 18:04:35 +0100
commit76c263b5eceac313ac2cdd3a3e7e2961876d3e31 (patch)
treebb16605711673d8f4ed851059c82509a6a66fec7 /grammar/tacextend.mlp
parentdbbc4da0e52567325d74128dccd1b54760cb970d (diff)
In the Kami project, that causes a stack overflow in one of the example files
(ProcThreeStInl.v, when the final "Defined" runs). I've verified that the change here fixes the stack overflow there with Coq 8.5pl2. In this version, all the recursive calls are in tail position. Instead of taking a single list of instructions, `emit' here takes a curent list and a remaining list of lists of instructions. That means the two calls elsewhere in the file now add an empty list argument. The algorithm works on the current list until it's empty, then works on the remaining lists. The most complex case is for Ksequence, where one of the pieces becomes the new current list, and the other pieces are consed onto the remaining sub-lists.
Diffstat (limited to 'grammar/tacextend.mlp')
0 files changed, 0 insertions, 0 deletions