It is practical, but it will require understanding large parts of clang. I have done some custom attribute stuff in clang, and it worked fine.
The big annoying part will be keeping your modifications up to date. That's almost a full time job. Because it is unlikely your changes will be accepted upstream, so you will always need to rebase them on top of latest code.
Btw clang already now can initialize variables to 0 by default. There is special argument for that: "-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang". And to leave variables undefined there's attribute __attribute__((uninitialized));
for more details.