OpenCL specification doesn't require the pragma for the uses of double type when it is supported by the targets. The wording in the spec is as follows:
- Only if double precision is supported. In OpenCL C 3.0 this will be indicated by the presence of the __opencl_c_fp64 feature macro.
in contrast to half type
- Only if the cl_khr_fp16 extension is supported and has been enabled.
This is primarily due to the fact that double is a type from C99 spec where it can be used without any pragmas. This is to align the core OpenCL behavior with C.
This patch does not break backward compatibility since the extension pragma is still supported and it makes the behavior of the compiler less strict by accepting code without extra pragma statements.
nit: this can be extended to use arbitrary type and extension for other patches which will eliminate pragmas for types