This patch simply adds support for marking a load as returning a non-null pointer. This is analogous to the existing nonnull return attribute, but it applies to specific load instructions instead. The value of the load is allowed to vary between successive loads, but null is not a valid value to be loaded by any load marked nonnull.
Hal - I'd particularly like your input here. Is adding a parallel metadata construct to the existing attribute a reasonable idea? Should we be uniform and accept the metadata on calls too? Is there a better way to approach this.