From: Siddhesh Poyarekar Date: Fri, 19 Jul 2024 16:44:32 +0000 (-0400) Subject: Avoid undefined behaviour in build_option_suggestions X-Git-Tag: basepoints/gcc-16~7380 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0d997e913f811ecf4b3e10891e6a4aab5b38a31;p=thirdparty%2Fgcc.git Avoid undefined behaviour in build_option_suggestions The inner loop in build_option_suggestions uses OPTION to take the address of OPTB and use it across iterations, which is undefined behaviour since OPTB is defined within the loop. Pull it outside the loop to make this defined. gcc/ChangeLog: * opt-suggestions.cc (option_proposer::build_option_suggestions): Pull OPTB definition out of the innermost loop. --- diff --git a/gcc/opt-suggestions.cc b/gcc/opt-suggestions.cc index 849e4f5c439..71e5cb561a6 100644 --- a/gcc/opt-suggestions.cc +++ b/gcc/opt-suggestions.cc @@ -167,9 +167,9 @@ option_proposer::build_option_suggestions (const char *prefix) add_misspelling_candidates (m_option_suggestions, option, opt_text); + struct cl_option optb; for (int j = 0; sanitizer_opts[j].name != NULL; ++j) { - struct cl_option optb; /* -fsanitize=all is not valid, only -fno-sanitize=all. So don't register the positive misspelling candidates for it. */