The assume attribute is a way to provide additional, arbitrary
information to the optimizer. For now, assumptions are restricted to
strings which will be accumulated for a function and emitted as comma
separated string function attribute. The key of the LLVM-IR function
attribute is llvm.assume. Similar to llvm.assume and
__builtin_assume, the assume attribute provides a user defined
assumption to the compiler.
A follow up patch will introduce an LLVM-core API to query the
assumptions attached to a function. We also expect to add more options,
e.g., expression arguments, to the assume attribute later on.
The omp [begin] asssumes pragma will leverage this attribute and
expose the functionality in the absence of OpenMP.
Should this be supported on ObjCMethod declarations as well?