A bug is reported regarding incorrect error given for logical NOT operation with a pointer type:
https://llvm.org/bugs/show_bug.cgi?id=30217
Detailed investigation shows that this has only been a problem for CL earlier than v1.2.
This patch fixes the issue as well as improves and simplifies related tests (by refactoring common bits).
Should this have a 2.0 run line for good measure?