While it is possible to avoid unexpected macro invocations by overquoting all text that could possibly be part of a macro, neither Autoconf itself nor most user code does this. Unexpected macro expansion would likely cause problems that would be difficult to debug. Therefore, Autoconf should fail if a macro has a name that is likely to clash with user code.
I propose that all macro names that could possibly be expanded directly (as opposed to only being expanded indirectly via indir or defn), and which are not builtins like dnl, be whitelisted against the regex /_?(m4[A-Za-z0-9_]*|[A-Z]+_[A-Z]+)/ – that is, they must either be within the namespace reserved by m4sugar, or they must consist only of capital letters and underscores, may only have at most one leading underscore, and must have at least one interior underscore.