This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Some low-hanging -Wunreachable-code fruits.
authorJarkko Hietaniemi <jhi@iki.fi>
Fri, 13 Jun 2014 01:23:14 +0000 (21:23 -0400)
committerJarkko Hietaniemi <jhi@iki.fi>
Sat, 14 Jun 2014 01:41:58 +0000 (21:41 -0400)
commit8c2b19724d117cecfa186d044abdbf766372c679
tree05aa26abffa2a53a577c846d81bb8f2743b99817
parentb017fe877ad78f04afaa3c1327fc46391f572bfb
Some low-hanging -Wunreachable-code fruits.

- after croak/die/exit (or return), break (or return!) are pointless
  (break is not a terminator/separator, it's a promise of a jump)
- after goto, another goto (!) is pointless
- in some cases (usually function ends) introduce explicit NOT_REACHED
  to make the noreturn nature clearer (do not do this everywhere, though,
  since that would mean adding NOT_REACHED after every croak)
- for the added NOT_REACHED also add /* NOTREACHED */ since
  NOT_REACHED is for gcc (and VC), while the comment is for linters
- declaring variables in switch blocks is just too fragile:
  it kind of works for narrowing the scope (which is nice),
  but breaks the moment there are initializations for the variables
  (they will be skipped!); in some easy cases simply hoist the declarations
  out of the block and move them earlier

There are still a few places left.
16 files changed:
dump.c
ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm
gv.c
mg.c
miniperlmain.c
op.c
pp.c
pp_ctl.c
pp_pack.c
pp_sys.c
regcomp.c
regexec.c
regexp.h
sv.c
toke.c
utf8.c