On Thu, Apr 02, 2015 at 09:05:53PM +0200, Jakub Jelinek wrote: > On Thu, Apr 02, 2015 at 09:23:03PM +0300, Ilya Verbin wrote: > > Hmm, libgomp.c++/target-3.C still fails. > > Here is what I see in need_assembler_name_p: > > Guess we should make the .omp_data_s.* types TYPE_ARTIFICIAL too. > Will take care of that tomorrow.
Tested on x86_64-linux, committed to trunk. 2015-04-03 Jakub Jelinek <ja...@redhat.com> * omp-low.c (scan_omp_parallel, scan_omp_task, scan_omp_target): Set TYPE_ARTIFICIAL on the .omp_data* types. --- gcc/omp-low.c.jj 2015-03-23 08:47:51.000000000 +0100 +++ gcc/omp-low.c 2015-04-02 22:06:30.547850197 +0200 @@ -2351,6 +2351,7 @@ scan_omp_parallel (gimple_stmt_iterator DECL_ARTIFICIAL (name) = 1; DECL_NAMELESS (name) = 1; TYPE_NAME (ctx->record_type) = name; + TYPE_ARTIFICIAL (ctx->record_type) = 1; create_omp_child_function (ctx, false); gimple_omp_parallel_set_child_fn (stmt, ctx->cb.dst_fn); @@ -2391,6 +2392,7 @@ scan_omp_task (gimple_stmt_iterator *gsi DECL_ARTIFICIAL (name) = 1; DECL_NAMELESS (name) = 1; TYPE_NAME (ctx->record_type) = name; + TYPE_ARTIFICIAL (ctx->record_type) = 1; create_omp_child_function (ctx, false); gimple_omp_task_set_child_fn (stmt, ctx->cb.dst_fn); @@ -2404,6 +2406,7 @@ scan_omp_task (gimple_stmt_iterator *gsi DECL_ARTIFICIAL (name) = 1; DECL_NAMELESS (name) = 1; TYPE_NAME (ctx->srecord_type) = name; + TYPE_ARTIFICIAL (ctx->srecord_type) = 1; create_omp_child_function (ctx, true); } @@ -2671,6 +2674,7 @@ scan_omp_target (gomp_target *stmt, omp_ DECL_ARTIFICIAL (name) = 1; DECL_NAMELESS (name) = 1; TYPE_NAME (ctx->record_type) = name; + TYPE_ARTIFICIAL (ctx->record_type) = 1; if (offloaded) { if (is_gimple_omp_oacc (stmt)) Jakub