Hi!

It seems that there is a bug some here:

On Wed, Jul 29, 2015 at 19:19:07 +0200, Jakub Jelinek wrote:
> @@ -12918,6 +12989,28 @@ lower_omp_target (gimple_stmt_iterator *
>           var = var2;
>         }
>  
> +     if (offloaded
> +         && OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_POINTER)
> +       {
> +         if (TREE_CODE (TREE_TYPE (var)) == ARRAY_TYPE)
> +           {
> +             tree type = build_pointer_type (TREE_TYPE (var));
> +             tree new_var = lookup_decl (var, ctx);
> +             x = create_tmp_var_raw (type, get_name (new_var));
> +             gimple_add_tmp_var (x);
> +             x = build_simple_mem_ref (x);
> +             SET_DECL_VALUE_EXPR (new_var, x);
> +             DECL_HAS_VALUE_EXPR_P (new_var) = 1;
> +           }
> +         continue;
> +       }
> +
> +     if (offloaded && OMP_CLAUSE_MAP_PRIVATE (c))
> +       {
> +         map_cnt++;
> +         continue;
> +       }
> +
>       if (!maybe_lookup_field (var, ctx))
>         continue;
>  

Here is the reproducer:

#pragma omp declare target
int a[1];
#pragma omp end declare target

void foo ()
{
  #pragma omp target map(to: a[0:1])
    a;
}


lookup_decl (var, ctx) tries to lookup for 'a', but ctx->cb.decl_map->get ()
returns null-pointer.


$ gcc -fopenmp -c test.c

test.c: In function ‘foo’:
test.c:7:11: internal compiler error: Segmentation fault
   #pragma omp target map(to: a[0:1])
           ^
0xd27276 crash_signal
        gcc/toplev.c:352
0xbae3fa lookup_decl
        gcc/omp-low.c:1056
0xbe208c lower_omp_target
        gcc/omp-low.c:13362
0xbe8464 lower_omp_1
        gcc/omp-low.c:14504
0xbe8911 lower_omp
        gcc/omp-low.c:14592
0xbe8017 lower_omp_1
        gcc/omp-low.c:14436
0xbe8911 lower_omp
        gcc/omp-low.c:14592
0xbe808b lower_omp_1
        gcc/omp-low.c:14445
0xbe8911 lower_omp
        gcc/omp-low.c:14592
0xbe8ad9 execute_lower_omp
        gcc/omp-low.c:14630
0xbe8b7e execute
        gcc/omp-low.c:14667
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

  -- Ilya

Reply via email to