the second requires us to write two passes, one to delete the DCL_TEMPS and other to introduce them,
No, I don't think we ever want to introduce it back. Just one very simple pass to get rid of it.
and avoid checking that DCL_TEMPS is present on the validator.
This actually simplifies the validator.
Notice that your commit isn't complete anyway: for hull shaders you have to do more work to track the shader phases, as in TPF each phase is supposed to have its own DCL_TEMPS. It's not too hard, but again: to what good is this? The SPIR-V backend completely ignores that instruction.
In general all the `DCL_` are rather metadata than instructions, and the general direction AFAICT is to move their content into actual metadata and then get rid of the instructions (unless you're feeding the disassembler, of course; here I'm talking about the SPIR-V backend).