summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-06-15 15:37:50 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-06-15 15:37:50 +0000
commit75d8b31e07afa9fbdd10c6f059f9b426897e4684 (patch)
tree656bc157f503e875f3dc85e936ccc480715fc49a /gcc/tree-ssa-pre.c
parentd2f4c25adf9483a3ca4afc50bc214f9f39bfbdfe (diff)
downloadgcc-75d8b31e07afa9fbdd10c6f059f9b426897e4684.tar.gz
2010-06-15 Richard Guenther <rguenther@suse.de>
* tree-ssa-pre.c (eliminate): Handle PHI elimination to constants. * gcc.dg/tree-ssa/ssa-sccvn-4.c: Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160793 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 687a3633d68..a62439f2af2 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4330,7 +4330,14 @@ eliminate (void)
else
gcc_unreachable ();
}
- if (!sprimeexpr
+ if (!sprime && is_gimple_min_invariant (VN_INFO (res)->valnum))
+ {
+ sprime = VN_INFO (res)->valnum;
+ if (!useless_type_conversion_p (TREE_TYPE (res),
+ TREE_TYPE (sprime)))
+ sprime = fold_convert (TREE_TYPE (res), sprime);
+ }
+ if (!sprime
|| sprime == res)
{
gsi_next (&gsi);