Commit 75b80166 by Steven Bosscher Committed by Steven Bosscher

re PR tree-optimization/21847 (misscompiling of the following java code)

	PR tree-optimization/21847
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
	-fnon-call-exceptions, also mark statements inherently
	necessary if they may throw.

From-SVN: r100714
parent 225962a0
2005-06-07 Steven Bosscher <stevenb@suse.de>
PR tree-optimization/21847
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): With
-fnon-call-exceptions, also mark statements inherently
necessary if they may throw.
2005-06-07 Adrian Straetling <straetling@de.ibm.com> 2005-06-07 Adrian Straetling <straetling@de.ibm.com>
* config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants. * config/s390/s390.md: ("UNSPECV_MB", "UNSPECV_CAS"): New constants.
......
...@@ -279,6 +279,15 @@ mark_stmt_if_obviously_necessary (tree stmt, bool aggressive) ...@@ -279,6 +279,15 @@ mark_stmt_if_obviously_necessary (tree stmt, bool aggressive)
tree op, def; tree op, def;
ssa_op_iter iter; ssa_op_iter iter;
/* With non-call exceptions, we have to assume that all statements could
throw. If a statement may throw, it is inherently necessary. */
if (flag_non_call_exceptions
&& tree_could_throw_p (stmt))
{
mark_stmt_necessary (stmt, true);
return;
}
/* Statements that are implicitly live. Most function calls, asm and return /* Statements that are implicitly live. Most function calls, asm and return
statements are required. Labels and BIND_EXPR nodes are kept because statements are required. Labels and BIND_EXPR nodes are kept because
they are control flow, and we have no way of knowing whether they can be they are control flow, and we have no way of knowing whether they can be
......
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