alive driver: check UB valuewise
fixes
MODIFY
tests/unit/call-error.opt
tests/unit/call-error.opt
-; ERROR: Source and target don't have the same return domain
+; ERROR: Source is more defined
%call = call i32 @f(i32 32)
=>
%call = call i32 @f(i32 poison)

ADD
tests/unit/valuewise.opt
+Name: undef
+%r = udiv i8 %x, 0
+ =>
+%r = i8 undef

MODIFY
tools/transform.cpp
tools/transform.cpp
@@ -1115,9 +1115,9 @@ Errors TransformVerify::verify() const {
if (name[0] != '%' || !dynamic_cast<const Instr*>(var))
continue;
- // TODO: add data-flow domain tracking for Alive, but not for TV
+ auto &val_tgt = tgt_state->at(*tgt_instrs.at(name));
check_refinement(errs, t, *src_state, *tgt_state, var, var->getType(),
- true, val, true, tgt_state->at(*tgt_instrs.at(name)),
+ val.domain, val, val_tgt.domain, val_tgt,
check_each_var);
if (errs)
return errs;

alive driver: check UB valuewise
fixes #64