So long as you cast it back to the correct type, there isn't any issue. Casting back to a different type is undefined behaviour anyway.
But this means that two distinct function pointers might compare equal when converted to void*, unless the type is somehow encoded.
This is the first I'm hearing that arbitrary function pointers converted to void* should be distinct on POSIX - do you have a reference?
Pointers to different objects should not compare equal in C (or at least in C++, can't remember if this is also a rule in C). Then again, functions are not objects.
Does Emscripten aim to be POSIX compliant?
I hope so if it want to have any chance to support most software out there.