The annotation intrinsic, floating point values, stores and branches

Hello,

With respect to the llvm.annotation.* instrinsic.

(1) I see it has been overloaded against all integer widths. Can it
also be overloaded against every llvm type (including label types,
function types, floating point types, pointer types, structure types,
etc)? If not, why? If so, how?

(2) Is there any way to use it to annotate instructions which produce
no value, such as stores and branch instructions?

Thank you,