You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
So it looks like the calling code assumes that (%rcx)/(-32(%rbp)) is filled as the return value, but it's not. Presumably return break should be a compile error (or be equivalent to break), as should more complicated code like
returnmatch foo {Bar => break,Baz => 2}
since it also has the same problem.
The text was updated successfully, but these errors were encountered:
Without optimisations:
Or, if the
let
marked with+
is moved to the*
.With
-O
(the position of thelet
doesn't matter):Delving in to the unoptimised asm, the only difference between
p
andok
is:So it looks like the calling code assumes that
(%rcx)
/(-32(%rbp))
is filled as the return value, but it's not. Presumablyreturn break
should be a compile error (or be equivalent tobreak
), as should more complicated code likesince it also has the same problem.
The text was updated successfully, but these errors were encountered: