I think that's silly. You misuse a variable that requires an auto, the compile dies, that's all. Hoisting implementation details into the name defeats that abstraction. The whole point of dSP and friends was to make it easier to switch to inline threaded code if we felt like it, in which case all bets are off as to which variables are auto.
Balance is usually necessary.
The fact of the matter is that code that makes as few assumptions as possible runs incredibly slow. So it's not possible to make as few assumptions as possible. Given this sort of directive, many programmers would go off and invent a general property system that is completely general and runs like a dog. One of the assumptions we need to avoid is that abstractions in the compiler are necessarily reflected in complications at runtime. Using the example given, if you need more than 32 flags, and you've abstracted your flags with macros, then it's pretty simple to redirect some of the flags to a different flag word without introducing a level of indirection at run-time.