in the description of llvm::cast it says:
But it will correctly return NULL when the input is NULL.
And in the description of llvm::cast_or_null it says:
Functionally identical to cast, except that a null value is accepted
This sounds to me as if both functions accept a null pointer.
What is then the difference between cast and cast_or_null?