That's strange, the spec explicitly says to use "binding" and not "location" in 4.4.6.2 (which points to 4.4.5).
Also, GL_ARB_shader_image_load_store specification tells:
- Data written to image variables in one rendering pass and read by the
shader in a later pass need not use coherent variables or
memoryBarrier(). Calling MemoryBarrier() with the
SHADER_IMAGE_ACCESS_BARRIER_BIT set in <barriers> between passes is
necessary.
As I understand it, if you continue using UAVs then you must call MemoryBarrier, if you're accessing the data in a different manner then you don't need to sync.
Please correct me if I'm wrong.