I have some problems with the spec. Namely, spec states for the loop:
- Let L be the label whose arity is 0 and whose continuation is the start of the loop.
And then in the Blocks section, in Exiting inst* with Label L (I assume this explains how end works?) it states:
- Let n be the arity of L
- ...
- Pop the results valⁿ from the stack
But is it correct? I'm interpreting this as "loop..end block can't return any values, because when executing loop we pushing label with arity=0 and when we execute end we pop 0 values". Which seems incorrect for me (e.g. counter-example).
Could someone clarify this to me?