Every call to a function with a non-void return type is expected to return some value. Including a return path in a non-void function that does not explicitly return a value results in undefined behavior.
Conversely, every call to a function with a void return type is expected to not return any value. Returning a value from a void function probably indicates a programming error.