Instead of setting operands to undef as the operands pass does, convert the operands to a function argument. This avoids having to introduce undef values into the IR which have some unpredictability during optimizations.
For instance,
define void @func() { entry: %val = add i32 32, 21 store i32 %val, i32* null ret void }
is reduced to
define void @func(i32 %val) { entry: %val1 = add i32 32, 21 store i32 %val, i32* null ret void }
(note that the instruction %val is renamed to %val1 when printing the IR to avoid ambiguity; ideally %val1 would be removed by dce or the instruction reduction pass)
Any call to @func is replaced with a call to the function with the new signature and filled with undef. This is not ideal for IPA passes, but those out-of-scope for now.
I think the dominant terminology here is "interesting" rather than "exciting" - probably best to keep with that for consistency?