LangRef/implementation inconsistency: What is the intended constraint on function return types?

PR15447 <; brings up that
there is an inconsistency both within LangRef and between LangRef and
the implementation regarding what is an allowed return type.

LangRef says:

"The return type of a function type is a first class type or a void type."

and also, contrarily,

"<returntype>‘ is any type except label."

On the other hand, the actual implementation of
FunctionType::isValidReturnType opines that:

bool FunctionType::isValidReturnType(Type *RetTy) {
  return !RetTy->isFunctionTy() && !RetTy->isLabelTy() &&

These definitions are mutually incompatible. What is the intended definition?

-- Sean Silva