在编写 deepvn 控制流测试用例时发现了一个小问题,如下面的测试用例(对应的 wasm 代码为 test/control/loop/for_64_1.wasm)
long long ADD(long long a, long long b) {
return a+b;
}
int main (void) {
long long i, res = 0;
for (i = 0; i < 10; i++)
res = ADD(res, i);
return res;
}
这里的输出应该是 45,但是测试得到的返回值为 0。同理 test/control/loop,test/control/break 下的所有 32 位的测试用例改为 64 位后都不对,而且返回值始终为 0。
还有一个问题是在 switch case 中,
long long getVal (long long a, long long b) {
long long res = (a + 1) * b;
return res;
}
int main (void) {
long long res = 0;
long long cond = getVal(4, 10);
switch (cond) {
case 10:
res = 11;
break;
case 20:
res = 22;
break;
case 30:
res = 33;
break;
case 40:
res = 44;
break;
case 50:
res = 55;
break;
case 60:
res = 66;
break;
case 70:
res = 77;
break;
default:
res = -1;
}
return res;
}
这里的返回值应该是 55,但得到的返回值却是 11。(可见 test/control/switch/switch_case_64_1.wasm)
在编写 deepvn 控制流测试用例时发现了一个小问题,如下面的测试用例(对应的 wasm 代码为 test/control/loop/for_64_1.wasm)
这里的输出应该是 45,但是测试得到的返回值为 0。同理 test/control/loop,test/control/break 下的所有 32 位的测试用例改为 64 位后都不对,而且返回值始终为 0。
还有一个问题是在 switch case 中,
这里的返回值应该是 55,但得到的返回值却是 11。(可见 test/control/switch/switch_case_64_1.wasm)