re PR tree-optimization/34966 (ICE: verify_ssa fails when optimization trigonometric code)

2008-01-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/34966
	* tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
	default defs and PHI_NODEs we have to insert after the
	defining statement.

	* gcc.c-torture/compile/pr34966.c: New testcase.

From-SVN: r131824
This commit is contained in:
Richard Guenther 2008-01-25 12:08:52 +00:00 committed by Richard Biener
parent 57e2aff267
commit 59805c3b29
4 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2008-01-25 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34966
* tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
default defs and PHI_NODEs we have to insert after the
defining statement.
2008-01-24 Nick Clifton <nickc@redhat.com>
* config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):

View File

@ -1,3 +1,8 @@
2008-01-25 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34966
* gcc.c-torture/compile/pr34966.c: New testcase.
2008-01-25 Richard Guenther <rguenther@suse.de>
PR c++/33887

View File

@ -0,0 +1,17 @@
extern double sin (double), cos (double);
__inline double
atan (double __x)
{
register double __result;
__asm __volatile__ ("" : "=t" (__result) : "0" (__x));
return __result;
}
double
f(double x)
{
double t = atan (x);
return cos (t) + sin (t);
}

View File

@ -661,8 +661,9 @@ execute_cse_sincos_1 (tree name)
call = build_call_expr (fndecl, 1, name);
stmt = build_gimple_modify_stmt (res, call);
def_stmt = SSA_NAME_DEF_STMT (name);
if (bb_for_stmt (def_stmt) == top_bb
&& TREE_CODE (def_stmt) == GIMPLE_MODIFY_STMT)
if (!SSA_NAME_IS_DEFAULT_DEF (name)
&& TREE_CODE (def_stmt) != PHI_NODE
&& bb_for_stmt (def_stmt) == top_bb)
{
bsi = bsi_for_stmt (def_stmt);
bsi_insert_after (&bsi, stmt, BSI_SAME_STMT);