Add an __assume side-effects warning

In MS-compatibility mode, we support the __assume builtin. The __assume builtin
does not evaluate its arguments, and we should issue a warning if __assume is
provided with an argument with side effects (because these effects will be
discarded).

This is similar in spirit to the warnings issued by other compilers (Intel
Diagnostic 2261, MS Compiler Warning C4557).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213266 91177308-0d34-0410-b5e6-96231b3b80d8
Handle __assume in the VoidExprEvaluator

This is a follow-up to an IRC conversation with Richard last night; __assume
does not evaluate its argument, and so the argument should not contribute to
whether (__assume(e), constant) can be used where a constant is required.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213267 91177308-0d34-0410-b5e6-96231b3b80d8