FnCall: deal with the case when # args doesn't match
MODIFY
ir/state.cpp
ir/state.cpp
@@ -359,7 +359,8 @@ void State::mkAxioms(State &tgt) {
auto &[ins2, ptr_ins2, mem2, reads2, argmem2] = I2->first;
auto &[rets2, ub2, mem_state2] = I2->second;
- if (reads != reads2 || argmem != argmem2)
+ if (reads != reads2 || argmem != argmem2 || ins.size() != ins2.size()
+ || ptr_ins.size() != ptr_ins2.size())
continue;
expr refines(true), is_val_eq(true);

ADD
tests/alive-tv/fncall-vararg.src.ll
+target triple = "x86_64-unknown-linux-gnu"
+
+declare void @g(i8*, ...)
+define void @f() {
+ tail call void (i8*, ...) @g(i8* null, i32 0)
+ ret void
+}
+; ERROR: Source is more defined than target

ADD
tests/alive-tv/fncall-vararg.tgt.ll
+target triple = "x86_64-unknown-linux-gnu"
+
+declare void @g(i8*, ...)
+define void @f() {
+ tail call void (i8*, ...) @g(i8* null)
+ ret void
+}

FnCall: deal with the case when # args doesn't match (#273)