Add real uses to some tests, to ensure dead instructions cannot be directly removed.
Replace some uses of undef in the tests. The undef causes runtime checks to be trivially fold/removeable, which does defeat the purpose of the tests.