From 5d70666e4c20dd634283e09336c78f79fce77d77 Mon Sep 17 00:00:00 2001 From: Ryan Burn Date: Wed, 27 Jan 2016 17:17:23 +0000 Subject: [PATCH] re PR c++/69267 ([cilkplus] ICE when calling a function with an empty class as an argument) 2016-01-15 Ryan Burn PR cilkplus/69267 * cilk.c (cilk_gimplify_call_params_in_spawned_fn): Change to use gimplify_arg. Removed superfluous post_p argument. * c-family.h (cilk_gimplify_call_params_in_spawned_fn): Removed superfluous post_p argument. * c-gimplify.c (c_gimplify_expr): Likewise. gcc/cp/ChangeLog: 2016-01-15 Ryan Burn PR cilkplus/69267 * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed superfluous post_p argument in call to cilk_gimplify_call_params_in_spawned_fn. gcc/testsuite/ChangeLog: 2016-01-15 Ryan Burn PR cilkplus/69267 * g++.dg/cilk-plus/CK/pr69267.cc: New test. From-SVN: r232887 --- gcc/c-family/ChangeLog | 9 +++++++++ gcc/c-family/c-common.h | 3 +-- gcc/c-family/c-gimplify.c | 4 ++-- gcc/c-family/cilk.c | 7 +++---- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/cp-gimplify.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc | 10 ++++++++++ 8 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index fdc96eabd7cf..8c869896130e 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,12 @@ +2016-01-27 Ryan Burn + + PR cilkplus/69267 + * cilk.c (cilk_gimplify_call_params_in_spawned_fn): Change to use + gimplify_arg. Removed superfluous post_p argument. + * c-family.h (cilk_gimplify_call_params_in_spawned_fn): Removed + superfluous post_p argument. + * c-gimplify.c (c_gimplify_expr): Likewise. + 2016-01-26 David Malcolm PR other/69006 diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index 93e605b061da..fa3746c37250 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -1449,8 +1449,7 @@ extern bool is_cilkplus_vector_p (tree); extern tree insert_cilk_frame (tree); extern void cilk_init_builtins (void); extern int gimplify_cilk_spawn (tree *); -extern void cilk_gimplify_call_params_in_spawned_fn (tree *, gimple_seq *, - gimple_seq *); +extern void cilk_gimplify_call_params_in_spawned_fn (tree *, gimple_seq *); extern void cilk_install_body_with_frame_cleanup (tree, tree, void *); extern bool cilk_detect_spawn_and_unwrap (tree *); extern bool cilk_set_spawn_marker (location_t, tree); diff --git a/gcc/c-family/c-gimplify.c b/gcc/c-family/c-gimplify.c index a5d348c3ed4e..0757193beeab 100644 --- a/gcc/c-family/c-gimplify.c +++ b/gcc/c-family/c-gimplify.c @@ -277,7 +277,7 @@ c_gimplify_expr (tree *expr_p, gimple_seq *pre_p ATTRIBUTE_UNUSED, if (!seen_error ()) { - cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p, post_p); + cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p); return (enum gimplify_status) gimplify_cilk_spawn (expr_p); } return GS_ERROR; @@ -292,7 +292,7 @@ c_gimplify_expr (tree *expr_p, gimple_seq *pre_p ATTRIBUTE_UNUSED, it is supposed to be. */ && !seen_error ()) { - cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p, post_p); + cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p); return (enum gimplify_status) gimplify_cilk_spawn (expr_p); } diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c index 4d6be33d818e..0b876b9fd6c3 100644 --- a/gcc/c-family/cilk.c +++ b/gcc/c-family/cilk.c @@ -779,8 +779,7 @@ create_cilk_wrapper (tree exp, tree *args_out) gimple sequences from the caller of gimplify_cilk_spawn. */ void -cilk_gimplify_call_params_in_spawned_fn (tree *expr_p, gimple_seq *pre_p, - gimple_seq *post_p) +cilk_gimplify_call_params_in_spawned_fn (tree *expr_p, gimple_seq *pre_p) { int ii = 0; tree *fix_parm_expr = expr_p; @@ -797,8 +796,8 @@ cilk_gimplify_call_params_in_spawned_fn (tree *expr_p, gimple_seq *pre_p, if (TREE_CODE (*fix_parm_expr) == CALL_EXPR) for (ii = 0; ii < call_expr_nargs (*fix_parm_expr); ii++) - gimplify_expr (&CALL_EXPR_ARG (*fix_parm_expr, ii), pre_p, post_p, - is_gimple_reg, fb_rvalue); + gimplify_arg (&CALL_EXPR_ARG (*fix_parm_expr, ii), pre_p, + EXPR_LOCATION (*fix_parm_expr)); } diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c8653c46f143..493b17afee32 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2016-01-27 Ryan Burn + + PR cilkplus/69267 + * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed + superfluous post_p argument in call to + cilk_gimplify_call_params_in_spawned_fn. + 2016-01-27 Marek Polacek PR c++/69379 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index ce0975baac9e..bb815340dddd 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -98,7 +98,7 @@ cilk_cp_gimplify_call_params_in_spawned_fn (tree *expr_p, gimple_seq *pre_p, { int ii = 0; - cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p, post_p); + cilk_gimplify_call_params_in_spawned_fn (expr_p, pre_p); if (TREE_CODE (*expr_p) == AGGR_INIT_EXPR) for (ii = 0; ii < aggr_init_expr_nargs (*expr_p); ii++) gimplify_expr (&AGGR_INIT_EXPR_ARG (*expr_p, ii), pre_p, post_p, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a7b0452cc0ca..98bb775ccac8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-01-27 Ryan Burn + + PR cilkplus/69267 + * g++.dg/cilk-plus/CK/pr69267.cc: New test. + 2016-01-27 Uros Bizjak PR target/69512 diff --git a/gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc b/gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc new file mode 100644 index 000000000000..7d00e49bf38d --- /dev/null +++ b/gcc/testsuite/g++.dg/cilk-plus/CK/pr69267.cc @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +struct A {}; + +void f (A) {} + +void g () { + _Cilk_spawn f (A ()); +} -- 2.47.2