1. A method of compiling kernels for execution comprising: generating, by at least one of the group consisting of a compiler and a driver executing on a compiling processor, arguments for executing binary code of a compiled kernel; determining, by the at least one of the group consisting of the compiler and the driver executing on the compiling processor, whether a first memory reference to a first memory region of the kernel arguments and a second memory reference to a second memory region of the kernel arguments refer to a same memory region; generating, by the at least one of the group consisting of the compiler and the driver executing on the compiling processor, metadata associated with the first memory reference and the second memory reference based on the determination, wherein the metadata indicates a relationship between the first memory region and the second memory region; and responsive to determining, by the at least one of the group consisting of the compiler and the driver executing on the compiling processor, that first and second memory references of the kernel do not refer to the same memory region: causing, by the at least one of the group consisting of the compiler and the driver executing on the compiling processor, a compiler to recompile the kernel based on the metadata; and instructing, by the at least one of the group consisting of the compiler and the driver executing on the compiling processor, a target processor to execute the recompiled kernel.