Commit d3545524 by Martin Jambor Committed by Martin Jambor

re PR middle-end/42898 (volatile structures and compound literal initializers)

2010-02-08  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/42898
	* tree-sra.c (build_accesses_from_assign): Do not mark in
	should_scalarize_away_bitmap if stmt has volatile ops.
	(sra_modify_assign): Do not process assigns piecemeal if if stmt
	has volatile ops.

From-SVN: r156599
parent 5d3579c5
2010-02-08 Martin Jambor <mjambor@suse.cz>
PR middle-end/42898
* tree-sra.c (build_accesses_from_assign): Do not mark in
should_scalarize_away_bitmap if stmt has volatile ops.
(sra_modify_assign): Do not process assigns piecemeal if if stmt
has volatile ops.
2010-02-08 Joern Rennecke <joern.rennecke@embecosm.com> 2010-02-08 Joern Rennecke <joern.rennecke@embecosm.com>
* doc/tm.texi (TARGET_UNWIND_WORD_MODE): Document. * doc/tm.texi (TARGET_UNWIND_WORD_MODE): Document.
......
...@@ -1023,7 +1023,8 @@ build_accesses_from_assign (gimple *stmt_ptr, ...@@ -1023,7 +1023,8 @@ build_accesses_from_assign (gimple *stmt_ptr,
racc = build_access_from_expr_1 (rhs_ptr, stmt, false); racc = build_access_from_expr_1 (rhs_ptr, stmt, false);
lacc = build_access_from_expr_1 (lhs_ptr, stmt, true); lacc = build_access_from_expr_1 (lhs_ptr, stmt, true);
if (should_scalarize_away_bitmap && racc && !is_gimple_reg_type (racc->type)) if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
&& racc && !is_gimple_reg_type (racc->type))
bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base)); bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
if (lacc && racc if (lacc && racc
...@@ -2648,7 +2649,9 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator *gsi, ...@@ -2648,7 +2649,9 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator *gsi,
there to do the copying and then load the scalar replacements of the LHS. there to do the copying and then load the scalar replacements of the LHS.
This is what the first branch does. */ This is what the first branch does. */
if (contains_view_convert_expr_p (rhs) || contains_view_convert_expr_p (lhs) if (gimple_has_volatile_ops (*stmt)
|| contains_view_convert_expr_p (rhs)
|| contains_view_convert_expr_p (lhs)
|| (access_has_children_p (racc) || (access_has_children_p (racc)
&& !ref_expr_for_all_replacements_p (racc, lhs, racc->offset)) && !ref_expr_for_all_replacements_p (racc, lhs, racc->offset))
|| (access_has_children_p (lacc) || (access_has_children_p (lacc)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment