This pass tries to remove Global Variables, as well as their derived uses. For example if a variable @x is used by %call1 and %call2, both these uses and the definition of @x are deleted. Moreover if %call1 or %call2 are used elsewhere those uses are also deleted, and so on recursively.
I'm still uncertain if this pass should remove derived uses, I'm open to discussion as to what might be the best approach.
This diff refactored how the Delta Debugging Algorithm is called in order to avoid confusion as to how it works.
It also fixes an out-of-range error when specialized passes got desired chunk-targets , and refactors the removal of uninteresting chunks in Delta.h, since the current implementation crashed when the last Chunk was erased.
Depends on D63672