Unlike Attributor, FunctionAttrs currently only supports inferring nofree on functions. This PR adds support for inferring it on arguments as well. I've chosen to integrate this with the inference for readnone/readonly/writeonly attributes, as the core logic for these is the same. There is a lot of test fallout. The only significant changes are in llvm/lib/Transforms/IPO/FunctionAttrs.cpp and llvm/test/Transforms/FunctionAttrs/nofree.ll.
This directory contains test cases for individual source features of LLVM. It is designed to make sure that the major components of LLVM support all of the features of LLVM, for very small examples. Entire programs should not go here. Regression tests for individual bug fixes should go into the test/Regression dir.