General LLVM question

Hello, Chris.

It depends on what sort of attribute it is. If it is something specific
to a particular function, adding it to the Function object makes sense
(e.g. see alignment and section info). If it affects the calling
convention, adding it to FunctionType makes sense.

I'm wanting some "general" attribute interface which can be applied to
concrete Function object. It seems, that just a set of string-string
pairs should be enough.

Surely, this interface can be used for some specific stuff at first time
(e.g. some attributes like visibility nowadays), which can be further
moved to its own implementation instead of generic one.

I am currently opposed to a general purpose way to stick random data on functions. With strings, you don't know what to do when linking (what combinations are invalid?), you can't verify them, and the code generator doesn't know how to handle them.