diff options
author | Martin Jambor <mjambor@suse.cz> | 2011-12-02 13:53:03 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2011-12-02 13:53:03 +0100 |
commit | 3e44f600c333e30f361110f36a55dde7ad30209d (patch) | |
tree | d1fa5c4db72da1a4f338be2510f3fbae364044a2 /gcc/tree-sra.c | |
parent | 45608a43c4716d018288df65f56dacd931f7e74f (diff) | |
download | gcc-3e44f600c333e30f361110f36a55dde7ad30209d.zip gcc-3e44f600c333e30f361110f36a55dde7ad30209d.tar.gz gcc-3e44f600c333e30f361110f36a55dde7ad30209d.tar.bz2 |
re PR tree-optimization/50622 (ICE: verify_gimple failed for std::complex<double>)
2011-12-02 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/50622
* tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
if both lacc and racc are grp_partial_lhs.
* testsuite/g++.dg/tree-ssa/pr50622.C: New test.
From-SVN: r181908
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 472ad5d..dec5316 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2692,6 +2692,10 @@ load_assign_lhs_subreplacements (struct access *lacc, struct access *top_racc, rhs = get_access_replacement (racc); if (!useless_type_conversion_p (lacc->type, racc->type)) rhs = fold_build1_loc (loc, VIEW_CONVERT_EXPR, lacc->type, rhs); + + if (racc->grp_partial_lhs && lacc->grp_partial_lhs) + rhs = force_gimple_operand_gsi (old_gsi, rhs, true, NULL_TREE, + true, GSI_SAME_STMT); } else { |