diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-13 02:33:10 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-13 02:33:10 +0000 |
commit | af40609c80f82f4033a8321f205258f8a3e5a4f2 (patch) | |
tree | 78b04c4676a17e65c12a5837d99d6bfd0a8fa7cd /gcc/tree-ssa-pre.c | |
parent | 300b54b8996c030072d09b2253225d9e016ffedd (diff) | |
download | gcc-af40609c80f82f4033a8321f205258f8a3e5a4f2.tar.gz |
2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/21840
* tree-ssa-pre.c (eliminate): Convert the sprime to the correct type
if *rhs_p is not a SSA_NAME.
2005-07-12 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/21840
* gcc.c-torture/compile/pr21840.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101960 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index eab18d34a16..fbfda11cebe 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -2334,8 +2334,17 @@ eliminate (void) fprintf (dump_file, " in "); print_generic_stmt (dump_file, stmt, 0); } + if (TREE_CODE (sprime) == SSA_NAME) NECESSARY (SSA_NAME_DEF_STMT (sprime)) = 1; + /* We need to make sure the new and old types actually match, + which may require adding a simple cast, which fold_convert + will do for us. */ + if (TREE_CODE (*rhs_p) != SSA_NAME + && !tree_ssa_useless_type_conversion_1 (TREE_TYPE (*rhs_p), + TREE_TYPE (sprime))) + sprime = fold_convert (TREE_TYPE (*rhs_p), sprime); + pre_stats.eliminations++; propagate_tree_value (rhs_p, sprime); update_stmt (stmt); |