Generates addrcast instead of bitcast for ternary operator when necessary, and diagnose ternary operator with incompatible second and third operands according to OpenCL v2.0 s6.5.6.
https://llvm.org/bugs/show_bug.cgi?id=19957
Differential Revision: http://reviews.llvm.org/D17412