llvm::AttributeList and llvm::AttributeSet are immutable, and so methods
defined on these classes, such as addAttribute, return a new immutable
object with the attribute added. In https://reviews.llvm.org/D55217 I attempted
to annotate methods such as addAttribute with LLVM_NODISCARD, since
calling these methods has no side-effects, and so ignoring the result
that is returned is almost certainly a programmer error.
However, committing the change resulted in new warnings in the AMDGPU target.
The AMDGPU simplify libcalls pass added in https://reviews.llvm.org/D36436
attempts to add the readonly and nounwind attributes to simplified
library functions, but instead calls the addAttribute methods and
ignores the result.
Modify the simplify libcalls pass to actually add the nounwind and
readonly attributes. Also update the simplify libcalls test to assert
that these attributes are actually being set.
My original diff fixed the typo in this check statement -- this should be GCN-PRELINK, not CGN-PRELINK. But in the interest of keeping this patch small and only changing one thing at a time, I've left this line alone for now. For what it's worth, the tests do pass with this typo fixed so that the CHECK is actually run.