* lib/backupfile.c: Sort include directives, and remove unnecessary <limits.h> include. (FALLTHROUGH): New macro, copied from other modules. (backupfile_internal): Use it to avoid code duplication. This lets GCC 8.2.1 generate better code by inlining the call to check_extension. --- ChangeLog | 10 ++++++++++ lib/backupfile.c | 19 +++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog index c08de2869..38c59c26a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2018-10-25 Paul Eggert <egg...@cs.ucla.edu> + + backupfile: tweak for better code + * lib/backupfile.c: Sort include directives, and remove + unnecessary <limits.h> include. + (FALLTHROUGH): New macro, copied from other modules. + (backupfile_internal): Use it to avoid code duplication. + This lets GCC 8.2.1 generate better code by inlining the + call to check_extension. + 2018-10-23 Paul Eggert <egg...@cs.ucla.edu> backupfile: new dir_fd args diff --git a/lib/backupfile.c b/lib/backupfile.c index ee12f7124..df7ac3809 100644 --- a/lib/backupfile.c +++ b/lib/backupfile.c @@ -23,21 +23,26 @@ #include "backup-internal.h" #include "dirname.h" +#include "opendirat.h" #include "renameatu.h" #include "xalloc-oversized.h" -#include <fcntl.h> #include <errno.h> +#include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <stdlib.h> #include <string.h> - -#include <limits.h> - #include <unistd.h> -#include "opendirat.h" +#ifndef FALLTHROUGH +# if __GNUC__ < 7 +# define FALLTHROUGH ((void) 0) +# else +# define FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +#endif + #ifndef _D_EXACT_NAMLEN # define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name) #endif @@ -351,9 +356,7 @@ backupfile_internal (int dir_fd, char const *file, memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size); } - check_extension (s, filelen, '~', sdir, &base_max); - break; - + FALLTHROUGH; case BACKUP_IS_LONGER: check_extension (s, filelen, '~', sdir, &base_max); break; -- 2.17.2