diff options
author | Richard Guenther <rguenther@suse.de> | 2009-04-11 07:34:09 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-04-11 07:34:09 +0000 |
commit | 8810712ed9d1a5c2031c640706af1a87acfd3e06 (patch) | |
tree | 90a319bf42d7d6bc1abc0e0b94bf8af1853a0f95 /gcc/tree-ssa-sccvn.c | |
parent | fa78c0c18bd008b04e41e1679461a0d837e72087 (diff) | |
download | gcc-8810712ed9d1a5c2031c640706af1a87acfd3e06.zip gcc-8810712ed9d1a5c2031c640706af1a87acfd3e06.tar.gz gcc-8810712ed9d1a5c2031c640706af1a87acfd3e06.tar.bz2 |
re PR tree-optimization/39713 (ICE in get_expr_value_id)
2009-04-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39713
* tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
reference trees have SSA_NAME operands.
* g++.dg/torture/pr39713.C: New testcase.
From-SVN: r145951
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r-- | gcc/tree-ssa-sccvn.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 416fa7f..f3b00e9 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -257,9 +257,10 @@ vn_get_expr_for (tree name) switch (TREE_CODE_CLASS (gimple_assign_rhs_code (def_stmt))) { case tcc_reference: - if (gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR - || gimple_assign_rhs_code (def_stmt) == REALPART_EXPR - || gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR) + if ((gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR + || gimple_assign_rhs_code (def_stmt) == REALPART_EXPR + || gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR) + && TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME) expr = fold_build1 (gimple_assign_rhs_code (def_stmt), gimple_expr_type (def_stmt), TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0)); |