e.g. in test/dot_s/alias.wast,
(type $FUNCSIG$v (func))
(func $__exit (type $FUNCSIG$v)
(return
(i32.add [..])
)
)
(func $__needs_exit (result i32)
(drop
(call $__exit)
)
So __exit is declared as not returning, but does have a return for some reason, and is dropped in __needs_exit. I'm not sure if the drop is wrong or the type is wrong or both (not sure how to read the .s file to tell).
cc @dschuff @sunfishcode