https://gcc.gnu.org/g:2eca8a9548eb7db21ee94b32fb482b2f545cf4b7

commit r14-10481-g2eca8a9548eb7db21ee94b32fb482b2f545cf4b7
Author: Siddhesh Poyarekar <siddh...@gotplt.org>
Date:   Fri Jul 19 12:44:32 2024 -0400

    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.
    
    (cherry picked from commit e0d997e913f811ecf4b3e10891e6a4aab5b38a31)

Diff:
---
 gcc/opt-suggestions.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/opt-suggestions.cc b/gcc/opt-suggestions.cc
index 849e4f5c4390..71e5cb561a69 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.  */

Reply via email to