-cl-strict-aliasing allows the compiler to apply OpenCL C (in practice C99) aliasing rules to the fullest extent which may allow further optimizations that might break non-compliant (but unfortunately common) code.
However, the compiler is not required to break any code that breaks aliasing rules, and it is further not required to detect and report such errors (that might have been the idea of your -Werror flag), even if some compilers try that (gcc’s -Wstrict-aliasing option, e.g.). The other way around, a compiler is also free to ignore -cl-strict-aliasing (or something similar).
For your simple example, I doubt it is possible to deduce anything. Did you have a look at the PTX assembly? I wouldn’t be surprised if just enough code to write 2.2 to *c is left, as everything can in principle be evaluated at compile time.