[LLVMdev] Loads moving across barriers

Owen Anderson resistor at mac.com
Fri Nov 8 13:53:26 PST 2013


Hi Matt,

On Nov 8, 2013, at 1:14 PM, Matt Arsenault <Matthew.Arsenault at amd.com> wrote:

> Both of these I think sort of went in the wrong direction and talked specifically about the semantics of the atomic instructions (fence in particular), which isn't the real question. Is noalias supposed to mean that no other thread can also have a copy of the pointer it also modifies? My guess at what was happening is that since the parameter is noalias, the assumption is there is no possible way for the side-effecting function to modify the pointer. The second thread brings up an ambiguity in the C spec about how restrict is supposed to be interpreted in the presense of multiple threads. OpenCL still has restrict, but unless this is supposed to work, it is pretty close to useless.

I checked the OpenCL specification, and it doesn’t give any clear definition of restrict beyond implicitly importing what C99 says.  That said, I think it’s is pretty clearly undesirable behavior for CL, even if it may (or may not) be technically permitted by the C specification.  I’d be in favor of clarifying our definition of noalias to disallow this transformation.

—Owen



More information about the llvm-dev mailing list