diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2006-06-19 14:33:46 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@gcc.gnu.org> | 2006-06-19 14:33:46 +0000 |
commit | 46b86adcdc8bdf4f49df1b52de41eefd9a1afd60 (patch) | |
tree | f7538558f1fde777988a78b4c1ca0c7d6194fb01 | |
parent | 4307d0dbf9a4ad8923df89e857bbe09a8b5edc20 (diff) | |
download | gcc-46b86adcdc8bdf4f49df1b52de41eefd9a1afd60.zip gcc-46b86adcdc8bdf4f49df1b52de41eefd9a1afd60.tar.gz gcc-46b86adcdc8bdf4f49df1b52de41eefd9a1afd60.tar.bz2 |
re PR tree-optimization/27341 (ICE in in add_virtual_operand with complex types)
2006-06-19 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/27341
* tree-cfg.c (gimplify_val): Call mark_new_vars_to_rename on the
statement we get.
* tree-complex.c (pass_lower_complex): Update SMT usage.
From-SVN: r114771
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr27341-1.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr27341-2.c | 8 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 2 | ||||
-rw-r--r-- | gcc/tree-complex.c | 7 |
5 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2c7c65a..34b7da6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-06-19 Daniel Berlin <dberlin@dberlin.org> + + Fix PR tree-optimization/27341 + * tree-cfg.c (gimplify_val): Call mark_new_vars_to_rename on the + statement we get. + * tree-complex.c (pass_lower_complex): Update SMT usage. + 2006-06-19 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.md ("doloop_si64", "doloop_si31", "doloop_di"): diff --git a/gcc/testsuite/gcc.c-torture/compile/pr27341-1.c b/gcc/testsuite/gcc.c-torture/compile/pr27341-1.c new file mode 100644 index 0000000..b77e937 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr27341-1.c @@ -0,0 +1,7 @@ +extern double R_NaReal; +void z_atan2 (double _Complex * r, double _Complex * ccs) +{ + if (*ccs == 0) + __imag__ *r = R_NaReal; +} + diff --git a/gcc/testsuite/gcc.c-torture/compile/pr27341-2.c b/gcc/testsuite/gcc.c-torture/compile/pr27341-2.c new file mode 100644 index 0000000..e6be1e4 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr27341-2.c @@ -0,0 +1,8 @@ +void zgemm_ (const int*, const double*); +extern void matmul_c8 (_Complex double * dest) +{ + const int ldc = 0; + const double zero = 0; + zgemm_ ( &zero, &ldc); + dest[1] += 1 ; +} diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index a3fed03..6dbb7d3 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5584,6 +5584,8 @@ gimplify_val (block_stmt_iterator *bsi, tree type, tree exp) TREE_BLOCK (new_stmt) = TREE_BLOCK (orig_stmt); bsi_insert_before (bsi, new_stmt, BSI_SAME_STMT); + if (in_ssa_p) + mark_new_vars_to_rename (new_stmt); return t; } diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 0a5040e..f841844 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -1541,11 +1541,12 @@ struct tree_opt_pass pass_lower_complex = 0, /* tv_id */ PROP_ssa, /* properties_required */ 0, /* properties_provided */ - 0, /* properties_destroyed */ + PROP_smt_usage, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_dump_func | TODO_ggc_collect - | TODO_update_ssa - | TODO_verify_stmts, /* todo_flags_finish */ + | TODO_update_smt_usage + | TODO_update_ssa + | TODO_verify_stmts, /* todo_flags_finish */ 0 /* letter */ }; |