Why opencl use source, instead IR


I have some question about IR and source.

I know opencl use source or binary in runtime.

and opencl can use IR(llvm) code also(use programwithsource or binary API)

However, why not use IR directly?

the opencl application use sourcecode and always hold it.(expept use binary)

when program runtime, compiler make IR from source, and IR translate to ISA.

I think when use IR dircetly(=application hold IR code, like java), the application sourcecode is not exposed.

And this way has merit in secure and complie time.

Source code is the most portable encoding.