re PR go/61204 (gccgo: ICE in in fold_convert_loc [GoSmith])
PR go/61204 * go-gcc.cc (Gcc_backend::temporary_variable): Don't initialize zero-sized variable. From-SVN: r219316
This commit is contained in:
parent
649a274903
commit
dd37378003
@ -1,7 +1,14 @@
|
||||
2015-01-07 Chris Manghane <cmang@google.com>
|
||||
|
||||
PR go/61204
|
||||
* go-gcc.cc (Gcc_backend::temporary_variable): Don't initialize
|
||||
zero-sized variable.
|
||||
|
||||
2015-01-06 Chris Manghane <cmang@google.com>
|
||||
|
||||
* go-gcc.cc (constructor_expression): Don't initialize zero-sized
|
||||
fields, just evaluate the values for side effects.
|
||||
* go-gcc.cc (Gcc_backend::constructor_expression): Don't
|
||||
initialize zero-sized fields, just evaluate the values for side
|
||||
effects.
|
||||
|
||||
2015-01-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
@ -11,8 +18,8 @@
|
||||
|
||||
2014-12-19 Chris Manghane <cmang@google.com>
|
||||
|
||||
* go-gcc.cc (array_constructor_expression): Don't construct arrays
|
||||
of zero-sized values.
|
||||
* go-gcc.cc (Gcc_backend::array_constructor_expression): Don't
|
||||
construct arrays of zero-sized values.
|
||||
|
||||
2014-10-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
|
@ -2536,7 +2536,7 @@ Gcc_backend::temporary_variable(Bfunction* function, Bblock* bblock,
|
||||
BIND_EXPR_VARS(bind_tree) = BLOCK_VARS(block_tree);
|
||||
}
|
||||
|
||||
if (init_tree != NULL_TREE)
|
||||
if (this->type_size(btype) != 0 && init_tree != NULL_TREE)
|
||||
DECL_INITIAL(var) = fold_convert_loc(location.gcc_location(), type_tree,
|
||||
init_tree);
|
||||
|
||||
@ -2546,6 +2546,13 @@ Gcc_backend::temporary_variable(Bfunction* function, Bblock* bblock,
|
||||
*pstatement = this->make_statement(build1_loc(location.gcc_location(),
|
||||
DECL_EXPR,
|
||||
void_type_node, var));
|
||||
|
||||
// Don't initialize VAR with BINIT, but still evaluate BINIT for
|
||||
// its side effects.
|
||||
if (this->type_size(btype) == 0 && init_tree != NULL_TREE)
|
||||
*pstatement = this->compound_statement(this->expression_statement(binit),
|
||||
*pstatement);
|
||||
|
||||
return new Bvariable(var);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user