[PATCH 2/4] sf: Tidy up code to avoid #ifdef
Pratyush Yadav
p.yadav at ti.com
Tue Apr 6 15:10:37 CEST 2021
On 06/04/21 01:32PM, Heinrich Schuchardt wrote:
> On 06.04.21 12:22, Pratyush Yadav wrote:
> > On 06/04/21 04:30PM, Simon Glass wrote:
> >> Update this code to use IS_ENABLED() instead.
> >>
> >> Signed-off-by: Simon Glass <sjg at chromium.org>
> >> ---
> >>
> >> cmd/sf.c | 32 ++++++++++++++------------------
> >> 1 file changed, 14 insertions(+), 18 deletions(-)
> >>
> >> diff --git a/cmd/sf.c b/cmd/sf.c
> >> index 46346fb9d43..d4f5ecee38c 100644
> >> --- a/cmd/sf.c
> >> +++ b/cmd/sf.c
> >> @@ -384,7 +384,6 @@ static int do_spi_protect(int argc, char *const argv[])
> >> return ret == 0 ? 0 : 1;
> >> }
> >>
> >> -#ifdef CONFIG_CMD_SF_TEST
> >> enum {
> >> STAGE_ERASE,
> >> STAGE_CHECK,
> >> @@ -394,7 +393,7 @@ enum {
> >> STAGE_COUNT,
> >> };
> >>
> >> -static char *stage_name[STAGE_COUNT] = {
> >> +static const char *stage_name[STAGE_COUNT] = {
> >> "erase",
> >> "check",
> >> "write",
> >> @@ -548,7 +547,6 @@ static int do_spi_flash_test(int argc, char *const argv[])
> >>
> >> return 0;
> >> }
> >> -#endif /* CONFIG_CMD_SF_TEST */
> >
> > Won't this cause all the test related functions to always be compiled
> > into the binary? Then what's the point of having it behind a config at
> > all?
>
> We compile all functions into separate sections. The linker eliminates
> unused functions. Look for -ffunction-sections in files
> arch/<arch>/config.mk.
Ah, clever! This would rely on the compiler eliminating the dead if
branch but the build uses -O2 or -Os, both of which should eliminate
dead code.
>
> Best regards
>
> Heinrich
>
> >
> >>
> >> static int do_spi_flash(struct cmd_tbl *cmdtp, int flag, int argc,
> >> char *const argv[])
> >> @@ -582,10 +580,8 @@ static int do_spi_flash(struct cmd_tbl *cmdtp, int flag, int argc,
> >> ret = do_spi_flash_erase(argc, argv);
> >> else if (strcmp(cmd, "protect") == 0)
> >> ret = do_spi_protect(argc, argv);
> >> -#ifdef CONFIG_CMD_SF_TEST
> >> - else if (!strcmp(cmd, "test"))
> >> + else if (IS_ENABLED(CONFIG_CMD_SF_TEST) && !strcmp(cmd, "test"))
> >> ret = do_spi_flash_test(argc, argv);
> >> -#endif
> >> else
> >> ret = -1;
> >>
> >> @@ -597,16 +593,8 @@ usage:
> >> return CMD_RET_USAGE;
> >> }
> >>
> >> -#ifdef CONFIG_CMD_SF_TEST
> >> -#define SF_TEST_HELP "\nsf test offset len " \
> >> - "- run a very basic destructive test"
> >> -#else
> >> -#define SF_TEST_HELP
> >> -#endif
> >> -
> >> -U_BOOT_CMD(
> >> - sf, 5, 1, do_spi_flash,
> >> - "SPI flash sub-system",
> >> +#ifdef CONFIG_SYS_LONGHELP
> >> +static const char long_help[] =
> >> "probe [[bus:]cs] [hz] [mode] - init flash device on given SPI bus\n"
> >> " and chip select\n"
> >> "sf read addr offset|partition len - read `len' bytes starting at\n"
> >> @@ -622,6 +610,14 @@ U_BOOT_CMD(
> >> " at `addr' to flash at `offset'\n"
> >> " or to start of mtd `partition'\n"
> >> "sf protect lock/unlock sector len - protect/unprotect 'len' bytes starting\n"
> >> - " at address 'sector'\n"
> >> - SF_TEST_HELP
> >> + " at address 'sector'"
> >> +#ifdef CONFIG_CMD_SF_TEST
> >> + "\nsf test offset len - run a very basic destructive test"
> >> +#endif
> >> +#endif /* CONFIG_SYS_LONGHELP */
> >> + ;
> >> +
> >> +U_BOOT_CMD(
> >> + sf, 5, 1, do_spi_flash,
> >> + "SPI flash sub-system", long_help
> >> );
> >> --
> >> 2.31.0.208.g409f899ff0-goog
> >>
> >
>
--
Regards,
Pratyush Yadav
Texas Instruments Inc.
More information about the U-Boot
mailing list