diff options
author | Richard Henderson <rth@redhat.com> | 2005-06-18 23:32:31 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2005-06-18 23:32:31 -0700 |
commit | aad97b9bddd3ba89e6b39f8c28c4fe714f65fd52 (patch) | |
tree | aace88511c766aed127001b3380bf080e98f0a29 /gcc/tree-ssa-pre.c | |
parent | 0f3a219b31a193df1a7690d319b4a1a3c8760c9c (diff) | |
download | gcc-aad97b9bddd3ba89e6b39f8c28c4fe714f65fd52.zip gcc-aad97b9bddd3ba89e6b39f8c28c4fe714f65fd52.tar.gz gcc-aad97b9bddd3ba89e6b39f8c28c4fe714f65fd52.tar.bz2 |
re PR tree-optimization/22116 (PRE of COMPLEX_EXPR causes ICE)
PR tree-opt/22116
* tree-ssa-pre.c (create_expression_by_pieces): Set
DECL_COMPLEX_GIMPLE_REG_P.
(insert_into_preds_of_block): Likewise.
From-SVN: r101177
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 6ec3cdc..a46c367 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1593,6 +1593,8 @@ create_expression_by_pieces (basic_block block, tree expr, tree stmts) that we will return. */ temp = create_tmp_var (TREE_TYPE (expr), "pretmp"); add_referenced_tmp_var (temp); + if (TREE_CODE (TREE_TYPE (expr)) == COMPLEX_TYPE) + DECL_COMPLEX_GIMPLE_REG_P (temp) = 1; newexpr = build (MODIFY_EXPR, TREE_TYPE (expr), temp, newexpr); name = make_ssa_name (temp, newexpr); TREE_OPERAND (newexpr, 0) = name; @@ -1699,6 +1701,8 @@ insert_into_preds_of_block (basic_block block, value_set_node_t node, /* Now build a phi for the new variable. */ temp = create_tmp_var (type, tmpname); add_referenced_tmp_var (temp); + if (TREE_CODE (type) == COMPLEX_TYPE) + DECL_COMPLEX_GIMPLE_REG_P (temp) = 1; temp = create_phi_node (temp, block); NECESSARY (temp) = 0; VEC_safe_push (tree, heap, inserted_exprs, temp); |