This is based on an example that was recently posted on llvm-dev:
void *propagate_null(void* b, int* g) { if (!b) { return 0; } (*g)++; return b; }
The original code or constant propagation in other passes has obscured the fact that the phi can be removed completely.
There's an instcombine proposal to fix part of this at D45378, but I don't think we want instcombine doing things like that (and I'm not sure that patch is correct as-is).
This could potentially be improved to handle the !CommonValue case, I think, but I guess it might be tricky to find the appropriate value.