diff options
Diffstat (limited to 'gcc/omp-low.c')
-rw-r--r-- | gcc/omp-low.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 2c35751..f99b2a6 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -8946,8 +8946,14 @@ lower_omp_for (gimple_stmt_iterator *gsi_p, omp_context *ctx) if (!gimple_seq_empty_p (omp_for_body) && gimple_code (gimple_seq_first_stmt (omp_for_body)) == GIMPLE_BIND) { - tree vars = gimple_bind_vars (gimple_seq_first_stmt (omp_for_body)); + gimple inner_bind = gimple_seq_first_stmt (omp_for_body); + tree vars = gimple_bind_vars (inner_bind); gimple_bind_append_vars (new_stmt, vars); + /* bind_vars/BLOCK_VARS are being moved to new_stmt/block, don't + keep them on the inner_bind and it's block. */ + gimple_bind_set_vars (inner_bind, NULL_TREE); + if (gimple_bind_block (inner_bind)) + BLOCK_VARS (gimple_bind_block (inner_bind)) = NULL_TREE; } if (gimple_omp_for_combined_into_p (stmt)) |