Hi Tom! On Thu, 24 Sep 2015 08:36:27 +0200, Tom de Vries <[email protected]> wrote: > On 24/09/15 08:23, Thomas Schwinge wrote: > > On Tue, 11 Aug 2015 20:53:39 +0200, Tom de Vries <[email protected]> > > wrote: > >> Don't create superfluous parm in expand_omp_taskreg > >> > >> 2015-08-11 Tom de Vries <[email protected]> > >> > >> * omp-low.c (expand_omp_taskreg): If in ssa, set rhs of parcopy stmt to > >> parm_decl, rather than generating a dummy default def in cfun. > >> * tree-cfg.c (replace_ssa_name): Assume no default defs. Make sure > >> ssa_name from cfun and child_fn do not share a stmt as def stmt. > >> (move_stmt_op): Handle PARM_DECl. > >> (gather_ssa_name_hash_map_from): New function. > >> (move_sese_region_to_fn): Add default defs for function params, and add > >> them to vars_map. Release copied ssa names. > >> * tree-cfg.h (gather_ssa_name_hash_map_from): Declare. > > > > Do I understand correct that with this change present on trunk (which I'm > > currently merging into gomp-4_0-branch), the changes you've earlier done > > on gomp-4_0-branch to gcc/omp-low.c:release_dangling_ssa_names, > > gcc/tree-cfg.c:replace_ssa_name, should now be reverted? That is, how > > much of the following patches can be reverted now (listed backwards in > > time)? > > indeed, in the above commit we release the dangling ssa names in > move_sese_region_to_fn. So after committing this patch to the > gomp-4_0-branch, the call to release_dangling_ssa_names is no longer > necessary, and the function release_dangling_ssa_names can be removed.
From IRC:
<tschwinge> vries: Are you totally busy right now, or could you spend
an hour on backporting to gomp-4_0-branch your trunk commit that I
mentorioned earlier today?
<vries> tschwinge: shouldn't be a problem
<tschwinge> veWell, I'm asking because in my merge tree, I'm running
into an assertion that you added there -- not sure yet whether I've
done something wrong, though.
<tschwinge> vries: ^
<vries> tschwinge: it would be useful for me to know which assertion
So far, I only looked at libgomp test results, and there, none of the
OpenMP but quite a number of the OpenACC tests fail as follows, for
example libgomp.oacc-c-c++-common/kernels-1.c:
[...]/build-gcc/gcc/xgcc -B[...]/build-gcc/gcc/
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-c/../libgomp.oacc-c-c++-common/kernels-1.c
-B[...]/build-gcc/x86_64-pc-linux-gnu/./libgomp/
-B[...]/build-gcc/x86_64-pc-linux-gnu/./libgomp/.libs
-I[...]/build-gcc/x86_64-pc-linux-gnu/./libgomp
-I[...]/source-gcc/libgomp/testsuite/../../include
-I[...]/source-gcc/libgomp/testsuite/..
-I/usr/local/cuda-5.5/targets/x86_64-linux/include -fmessage-length=0
-fno-diagnostics-show-caret -fdiagnostics-color=never
-B[...]/install/offload-nvptx-none/libexec/gcc/x86_64-pc-linux-gnu/6.0.0
-B[...]/install/offload-nvptx-none/bin
-B[...]/install/offload-x86_64-intelmicemul-linux-gnu/libexec/gcc/x86_64-pc-linux-gnu/6.0.0
-B[...]/install/offload-x86_64-intelmicemul-linux-gnu/bin -fopenacc
-I[...]/source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none -O2
-L[...]/build-gcc/x86_64-pc-linux-gnu/./libgomp/.libs -lm -o ./kernels-1.exe
In file included from
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-c/../libgomp.oacc-c-c++-common/kernels-1.c:6:0:
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-c/../libgomp.oacc-c-c++-common/data-clauses.h:
In function 'main':
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-c/../libgomp.oacc-c-c++-common/data-clauses.h:182:9:
internal compiler error: in replace_ssa_name, at tree-cfg.c:6423
0xb0518a replace_ssa_name
[...]/source-gcc/gcc/tree-cfg.c:6423
0xb05407 move_stmt_op
[...]/source-gcc/gcc/tree-cfg.c:6501
0xd75e43 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
[...]/source-gcc/gcc/tree.c:11341
0x89832c walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
[...]/source-gcc/gcc/gimple-walk.c:204
0x898814 walk_gimple_stmt(gimple_stmt_iterator*, tree_node*
(*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**,
int*, void*), walk_stmt_info*)
[...]/source-gcc/gcc/gimple-walk.c:562
0xb088e3 move_block_to_fn
[...]/source-gcc/gcc/tree-cfg.c:6774
0xb088e3 move_sese_region_to_fn(function*, basic_block_def*,
basic_block_def*, tree_node*)
[...]/source-gcc/gcc/tree-cfg.c:7238
0x9c1133 expand_omp_target
[...]/source-gcc/gcc/omp-low.c:9802
0x9c3a1c expand_omp
[...]/source-gcc/gcc/omp-low.c:10240
0x9cc3fe execute_expand_omp
[...]/source-gcc/gcc/omp-low.c:10486
0x9cc568 execute
[...]/source-gcc/gcc/omp-low.c:10609
source-gcc/gcc/tree-cfg.c:
[...]
6405 /* Creates an ssa name in TO_CONTEXT equivalent to NAME.
6406 VARS_MAP maps old ssa names and var_decls to the new ones. */
6407
6408 static tree
6409 replace_ssa_name (tree name, hash_map<tree, tree> *vars_map,
6410 tree to_context)
6411 {
6412 tree new_name;
6413
6414 gcc_assert (!virtual_operand_p (name));
6415
6416 tree *loc = vars_map->get (name);
6417
6418 if (!loc)
6419 {
6420 tree decl = SSA_NAME_VAR (name);
6421 if (decl)
6422 {
6423 gcc_assert (!SSA_NAME_IS_DEFAULT_DEF (name));
6424 replace_by_duplicate_decl (&decl, vars_map, to_context);
6425 /* If name is a default def, then we don't move the
defining stmt
6426 (which is a nop). Because (1) the nop doesn't belong
to the sese
6427 region, and (2) while setting the def stmt of name to
NULL would
6428 trigger release_ssa_name in
release_dangling_ssa_names, it wouldn't
6429 be released since it's a default def, and subsequently
cause an
6430 ssa verification failure. */
6431 new_name = make_ssa_name_fn (DECL_STRUCT_FUNCTION
(to_context),
6432 decl, SSA_NAME_DEF_STMT
(name));
6433 if (SSA_NAME_IS_DEFAULT_DEF (name))
6434 set_ssa_default_def (DECL_STRUCT_FUNCTION (to_context),
6435 decl, new_name);
6436 }
6437 else
6438 new_name = copy_ssa_name_fn (DECL_STRUCT_FUNCTION
(to_context),
6439 name, SSA_NAME_DEF_STMT
(name));
6440
6441 /* Now that we've used the def stmt to define new_name, make
sure it
6442 doesn't define name anymore. */
6443 SSA_NAME_DEF_STMT (name) = NULL;
6444
6445 vars_map->put (name, new_name);
6446
6447 if (!SSA_NAME_IS_DEFAULT_DEF (name))
6448 /* The statement has been moved to the child function. It
no longer
6449 defines name in the original function. Mark the def
stmt NULL, and
6450 let release_dangling_ssa_names deal with it. */
6451 SSA_NAME_DEF_STMT (name) = NULL;
6452 }
6453 else
6454 new_name = *loc;
6455
6456 return new_name;
6457 }
[...]
As I said, this is in my WIP tree to merge from trunk into
gomp-4_0-branch. To rule out any obvious things, would you please
backport to gomp-4_0-branch your trunk commit r227103
(883f001d2c3672e0674bec71f36a2052734a72cf, "Don't create superfluous parm
in expand_omp_taskreg"), and revert the following changes as appropriate:
> > commit 6befb84f4c0157a4cdf66cfaf64e457180f9a7fa
> > Author: vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
> > Date: Wed Aug 5 06:01:08 2015 +0000
> >
> > Fix release_dangling_ssa_names
> >
> > 2015-08-05 Tom de Vries <[email protected]>
> >
> > * omp-low.c (release_dangling_ssa_names): Release SSA_NAMEs with
> > NULL
> > def stmt.
> > * tree-cfg.c (replace_ssa_name): Don't move default def nops. Set
> > def
> > stmt of unused SSA_NAME to NULL.
> >
> > git-svn-id:
> > svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@226608
> > 138bc75d-0d04-0410-961f-82ee72b054a4
> >
> > commit 0cf67438bd87e5a6ec063e90da0ea20801bda54c
> > Author: vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
> > Date: Thu Jun 4 15:47:09 2015 +0000
> >
> > Add release_dangling_ssa_names
> >
> > 2015-06-04 Tom de Vries <[email protected]>
> >
> > * omp-low.c (release_dangling_ssa_names): Factor out of ...
> > (pass_expand_omp_ssa::execute): ... here.
> >
> > git-svn-id:
> > svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@224130
> > 138bc75d-0d04-0410-961f-82ee72b054a4
> >
> > commit 93557ac5e30c26ee1a3d1255e31265b287171a0d
> > Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> > Date: Tue Apr 21 19:37:19 2015 +0000
> >
> > Expand oacc kernels after pass_fre
> >
> > gcc/
> > * omp-low.c: Include gimple-pretty-print.h.
> > (release_first_vuse_in_edge_dest): New function.
> > (expand_omp_target): When not in ssa, don't split off oacc kernels
> > region, clear PROP_gimple_eomp in cfun->curr_properties to force
> > later
> > expanssion, and add GOACC_kernels_internal call.
> > When in ssa, split off oacc kernels and convert
> > GOACC_kernels_internal
> > into GOACC_kernels call. Handle ssa-code.
> > (pass_data_expand_omp): Don't set PROP_gimple_eomp unconditionally
> > in
> > properties_provided field.
> > (pass_expand_omp::execute): Set PROP_gimple_eomp in
> > cfun->curr_properties tentatively.
> > (pass_data_expand_omp_ssa): Add TODO_remove_unused_locals to
> > todo_flags_finish field.
> > (pass_expand_omp_ssa::execute): Release dangling SSA_NAMEs after
> > calling
> > execute_expand_omp.
> > (gimple_stmt_ssa_operand_references_var_p)
> > (gimple_stmt_omp_data_i_init_p): New function.
> > * omp-low.h (gimple_stmt_omp_data_i_init_p): Declare.
> > * passes.def: Add pass_expand_omp_ssa after pass_fre. Add
> > pass_expand_omp_ssa after pass_all_early_optimizations.
> > * tree-ssa-ccp.c: Include omp-low.h.
> > (surely_varying_stmt_p, ccp_visit_stmt): Handle .omp_data_i init
> > conservatively.
> > * tree-ssa-forwprop.c: Include omp-low.h.
> > (pass_forwprop::execute): Handle .omp_data_i init conservatively.
> > * tree-ssa-sccvn.c: Include omp-low.h.
> > (visit_use): Handle .omp_data_i init conservatively.
> > * cgraph.c (cgraph_node::release_body): Don't release offloadable
> > functions.
> >
> > git-svn-id:
> > svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@222279
> > 138bc75d-0d04-0410-961f-82ee72b054a4
Grüße,
Thomas
signature.asc
Description: PGP signature
