Closed Novak756 closed 1 year ago
Thanks for the bug report.
If you run ./Ultimate -tc config/AutomizerReach.xml -s config/svcomp-Reach-64bit-Automizer_Bitvector.epf -i bug.c
you will get the correct result.
It seems that our integer-based analysis fails to compute modulo 2^{32} in rare cases related to a shift operation. I will have a closer look at the problem in the next days.
I fixed it, there was indeed a missing modulo in the case, where the second operand of the right-shift is a constant.
Basic Info
int main(){ unsigned char uc = VERIFIER_nondet_uchar(); if((unsigned int) ((unsigned int)(((unsigned int)(((unsigned int) uc) + ((unsigned int)(((unsigned int) 4294967295) * 1)))) >> ((unsigned int) 2))) < (unsigned int) 8){ VERIFIER_error(); } return 0; }