Apparently GCC allows this, and there's code relying on it (see bug, which is a release blocker for llvm 8).
The idea is to allow expression that would have been allowed if they were cast to int. So I based the code on how such a cast would be done (the CK_PointerToIntegral case in IntExprEvaluator::VisitCastExpr()).
I'm unfamiliar with this code, especially the LValue variant of APValue, so please take a careful look.