Closed michael-schwarz closed 4 years ago
The problem seems to be in CIL indeed. During conversion from cabs
to cil
, a visitor is used to remove superfluous parentheses.
We then run into the stack overflow because the two programs each contain a switch statement that has >130k
children (the cases):
switch(pos) {
case 786431LL:
case 786430LL:
case 786420LL:
[...]
case 655362LL:
case 655361LL:
case 655360LL:
}
If I reduce the number of cases to a more reasonable number, it works again.
There might be some way to modify the visitor to use recursion more sparingly, but I don't think it is worth the effort. Programs with tens of thousands of cases for a single switch are not too common in my opinion.
On two of the programs from SV-COMP, we get a Stackoverflow in Cabsvisit