summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-04-15 14:18:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-04-15 14:18:22 +0000
commitf116fecf890dbc4aaacd256eb26459d7ece30e99 (patch)
treed3fafed5c7015ded94c8c73fef791671f893cbc0 /gcc
parent25e20805c0689319973ce9a5201cd0c3e149c9e2 (diff)
downloadgcc-f116fecf890dbc4aaacd256eb26459d7ece30e99.tar.gz
tree-ssa-pre.c (eliminate): When replacing a PHI node carry out a necessary conversion.
2009-04-15 Richard Guenther <rguenther@suse.de> * tree-ssa-pre.c (eliminate): When replacing a PHI node carry out a necessary conversion. * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to names we didn't value number. * tree-mudflap.c (mf_build_check_statement_for): Use correct types. From-SVN: r146121
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-mudflap.c6
-rw-r--r--gcc/tree-ssa-pre.c2
-rw-r--r--gcc/tree-ssa-sccvn.c3
4 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6ba81d270a4..6898c7c8c8a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2009-04-15 Richard Guenther <rguenther@suse.de>
+ * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
+ out a necessary conversion.
+ * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
+ names we didn't value number.
+ * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
+
+2009-04-15 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/39764
* tree-ssa-ccp.c (get_value): Canonicalize value with
canonicalize_float_value.
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index dae12874dad..1e84ad3ed2d 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -634,7 +634,7 @@ mf_build_check_statement_for (tree base, tree limit,
/* Build the conditional jump. 'cond' is just a temporary so we can
simply build a void COND_EXPR. We do need labels in both arms though. */
- g = gimple_build_cond (NE_EXPR, cond, integer_zero_node, NULL_TREE,
+ g = gimple_build_cond (NE_EXPR, cond, boolean_false_node, NULL_TREE,
NULL_TREE);
gimple_set_location (g, location);
gimple_seq_add_stmt (&seq, g);
@@ -664,9 +664,9 @@ mf_build_check_statement_for (tree base, tree limit,
/* u is a string, so it is already a gimple value. */
u = mf_file_function_line_tree (location);
/* NB: we pass the overall [base..limit] range to mf_check. */
- v = fold_build2 (PLUS_EXPR, integer_type_node,
+ v = fold_build2 (PLUS_EXPR, mf_uintptr_type,
fold_build2 (MINUS_EXPR, mf_uintptr_type, mf_limit, mf_base),
- integer_one_node);
+ build_int_cst (mf_uintptr_type, 1));
v = force_gimple_operand (v, &stmts, true, NULL_TREE);
gimple_seq_add_seq (&seq, stmts);
g = gimple_build_call (mf_check_fndecl, 4, mf_base, v, dirflag, u);
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 54770c8eea9..1119f078b39 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4181,6 +4181,8 @@ eliminate (void)
remove_phi_node (&gsi, false);
+ if (!useless_type_conversion_p (TREE_TYPE (res), TREE_TYPE (sprime)))
+ sprime = fold_convert (TREE_TYPE (res), sprime);
stmt = gimple_build_assign (res, sprime);
SSA_NAME_DEF_STMT (res) = stmt;
if (TREE_CODE (sprime) == SSA_NAME)
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index f3b00e99b48..b101aebd9e4 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -2886,7 +2886,8 @@ run_scc_vn (bool may_insert_arg)
if (!name)
continue;
info = VN_INFO (name);
- if (info->valnum == name)
+ if (info->valnum == name
+ || info->valnum == VN_TOP)
info->value_id = get_next_value_id ();
else if (is_gimple_min_invariant (info->valnum))
info->value_id = get_or_alloc_constant_value_id (info->valnum);