Technically, I suppose this patch is independent of the upcoming llvm sibling patch because we can still pass 'check-all' with this alone. But this patch should be tightly coupled with that patch when committed because there's nothing currently in llvm to read this new function attribute string.
The motivation for the change is that we can't have pseudo-global settings for codegen living in TargetOptions because that doesn't work with LTO. And yet, there are so many others there...
Ideally, these reciprocal attributes will be moved to the instruction-level via FMF, metadata, or something else. But making them function attributes is at least an improvement over the current mess.