aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@gotplt.org>2024-07-19 12:44:32 -0400
committerSiddhesh Poyarekar <siddhesh@gotplt.org>2024-07-20 07:53:23 -0400
commite0d997e913f811ecf4b3e10891e6a4aab5b38a31 (patch)
tree07dcbc73ac9d424f54f7f5a5539f47473876f997
parent56f824cc206ff00d466aaeb11211d8005c4668bc (diff)
downloadgcc-e0d997e913f811ecf4b3e10891e6a4aab5b38a31.zip
gcc-e0d997e913f811ecf4b3e10891e6a4aab5b38a31.tar.gz
gcc-e0d997e913f811ecf4b3e10891e6a4aab5b38a31.tar.bz2
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.
-rw-r--r--gcc/opt-suggestions.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/opt-suggestions.cc b/gcc/opt-suggestions.cc
index 849e4f5..71e5cb5 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. */