I'm currently developping a project where some code was marked as "unreachable" by AppCode, although it's clearly not the case. I tried to extract a small (meaningless) pattern that reproduce the problem:
int x = 0;
if (rand() & 1) x++;
if (x < 10) continue;
} while(rand() < 100);
Yes, I know that I could actually write things in a more conventional way, but this is not the point ;)
In this example, the code following the closing bracket (the "while" statement and all the code after the while) is considered as unreachable. I think this is related to the basic block ending with a "return" statement, but, if you look closely, there is a "continue" statement before that is triggered sometimes (depends on the number of odd numbers that will be returned by the rand() function), and the code after the while may be executed if a rand number greater than 100 is produced at this point. In all the cases, the code will always ends.
I hope that this code snippet will help you find the problem.