re PR middle-end/60469 (simple cilk plus program ICEs)

gcc/c/
	PR middle-end/60469
	* c-array-notation.c (fix_builtin_array_notation_fn): Use
	create_tmp_var instead build_decl for creating temps.
	(build_array_notation_expr): Likewise.
	(fix_conditional_array_notations_1): Likewise.
	(fix_array_notation_expr): Likewise.
	(fix_array_notation_call_expr): Likewise.

gcc/testsuite/
	PR middle-end/60469
	* c-c++-common/cilk-plus/CK/pr60469.c: New test.

From-SVN: r209336
This commit is contained in:
Igor Zamyatin 2014-04-12 17:57:15 +00:00 committed by Kirill Yukhin
parent 5e7d8b4c02
commit 2f6babac7d
4 changed files with 39 additions and 12 deletions

View File

@ -1,3 +1,13 @@
2014-04-12 Igor Zamyatin <igor.zamyatin@intel.com>
PR middle-end/60469
* c-array-notation.c (fix_builtin_array_notation_fn): Use
create_tmp_var instead build_decl for creating temps.
(build_array_notation_expr): Likewise.
(fix_conditional_array_notations_1): Likewise.
(fix_array_notation_expr): Likewise.
(fix_array_notation_call_expr): Likewise.
2014-03-28 Jakub Jelinek <jakub@redhat.com>
PR c++/60689

View File

@ -70,6 +70,7 @@
#include "coretypes.h"
#include "tree.h"
#include "c-tree.h"
#include "gimple-expr.h"
#include "tree-iterator.h"
#include "opts.h"
#include "c-family/c-common.h"
@ -282,8 +283,7 @@ fix_builtin_array_notation_fn (tree an_builtin_fn, tree *new_var)
for (ii = 0; ii < rank; ii++)
{
an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
an_loop_info[ii].var = create_tmp_var (integer_type_node, NULL);
an_loop_info[ii].ind_init =
build_modify_expr (location, an_loop_info[ii].var,
TREE_TYPE (an_loop_info[ii].var), NOP_EXPR,
@ -781,8 +781,8 @@ build_array_notation_expr (location_t location, tree lhs, tree lhs_origtype,
for (ii = 0; ii < lhs_rank; ii++)
if (lhs_an_info[0][ii].is_vector)
{
lhs_an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
lhs_an_loop_info[ii].var = create_tmp_var (integer_type_node,
NULL);
lhs_an_loop_info[ii].ind_init = build_modify_expr
(location, lhs_an_loop_info[ii].var,
TREE_TYPE (lhs_an_loop_info[ii].var), NOP_EXPR,
@ -793,8 +793,8 @@ build_array_notation_expr (location_t location, tree lhs, tree lhs_origtype,
{
/* When we have a polynomial, we assume that the indices are of type
integer. */
rhs_an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
rhs_an_loop_info[ii].var = create_tmp_var (integer_type_node,
NULL);
rhs_an_loop_info[ii].ind_init = build_modify_expr
(location, rhs_an_loop_info[ii].var,
TREE_TYPE (rhs_an_loop_info[ii].var), NOP_EXPR,
@ -970,8 +970,7 @@ fix_conditional_array_notations_1 (tree stmt)
cilkplus_extract_an_triplets (array_list, list_size, rank, &an_info);
for (ii = 0; ii < rank; ii++)
{
an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
an_loop_info[ii].var = create_tmp_var (integer_type_node, NULL);
an_loop_info[ii].ind_init =
build_modify_expr (location, an_loop_info[ii].var,
TREE_TYPE (an_loop_info[ii].var), NOP_EXPR,
@ -1067,8 +1066,7 @@ fix_array_notation_expr (location_t location, enum tree_code code,
loop_init = push_stmt_list ();
for (ii = 0; ii < rank; ii++)
{
an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
an_loop_info[ii].var = create_tmp_var (integer_type_node, NULL);
an_loop_info[ii].ind_init =
build_modify_expr (location, an_loop_info[ii].var,
TREE_TYPE (an_loop_info[ii].var), NOP_EXPR,
@ -1163,8 +1161,7 @@ fix_array_notation_call_expr (tree arg)
}
for (ii = 0; ii < rank; ii++)
{
an_loop_info[ii].var = build_decl (location, VAR_DECL, NULL_TREE,
integer_type_node);
an_loop_info[ii].var = create_tmp_var (integer_type_node, NULL);
an_loop_info[ii].ind_init =
build_modify_expr (location, an_loop_info[ii].var,
TREE_TYPE (an_loop_info[ii].var), NOP_EXPR, location,

View File

@ -1,3 +1,8 @@
2014-04-12 Igor Zamyatin <igor.zamyatin@intel.com>
PR middle-end/60469
* c-c++-common/cilk-plus/CK/pr60469.c: New test.
2014-04-12 Richard Sandiford <rdsandiford@googlemail.com>
* gcc.target/mips/umips-store16-1.c: New test.

View File

@ -0,0 +1,15 @@
/* PR middle-end/60469 */
/* { dg-do compile } */
/* { dg-options "-fcilkplus" } */
void foo() {}
#define ALEN 1024
int main(int argc, char* argv[])
{
int b[ALEN];
b[:] = 100;
_Cilk_spawn foo();
return 0;
}