The main reason why we can't perform attribute inference for all functions is separate compilation. Currently we only do it for functions where the source code must be available, i.e. template functions and auto return functions.
If we added an alias symbol from the mangling with annotated attributes to the one with inferred attributes an object could be linked with or without knowledge of the infered attributes/source code. This could be helpful to reduce the amount of annotation necessary within a library/project.