This patch fixes false positives for vardecls that are technically unreachable but they are needed.
switch (x) { int a; // <- This is unreachable but needed case 1: a = ...
For this code there will be Wunused-variable:
if (1+2==45) { int x; }
For this code there is 'unreachable code' warning on the 'if (1)':
if (1+2==45) { int x; if (1) {} }
Maybe I would prefer something like !isa<DeclStmt> which is a less intrusive change.