diff options
-rw-r--r-- | gcc/gimplify.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/asan/pr99877.C | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 1f417a5..b65106b 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -14328,7 +14328,8 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, Doing so would prevent us from reporting a false positives. */ if (asan_poisoned_variables && asan_used_labels != NULL - && asan_used_labels->contains (label)) + && asan_used_labels->contains (label) + && !gimplify_omp_ctxp) asan_poison_variables (asan_poisoned_variables, false, pre_p); break; diff --git a/gcc/testsuite/g++.dg/asan/pr99877.C b/gcc/testsuite/g++.dg/asan/pr99877.C new file mode 100644 index 0000000..95a8641 --- /dev/null +++ b/gcc/testsuite/g++.dg/asan/pr99877.C @@ -0,0 +1,19 @@ +/* PR sanitizer/99877*/ +/* { dg-options "-fsanitize=address -fopenmp -O2" } */ + +struct vector +{ + int size (); +}; +int +main () +{ + vector outqueue; +#pragma omp parallel + { + goto continueloop; + continueloop:; + } + for (; outqueue.size ();) + ; +} |