diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-15 15:37:50 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-15 15:37:50 +0000 |
commit | 75d8b31e07afa9fbdd10c6f059f9b426897e4684 (patch) | |
tree | 656bc157f503e875f3dc85e936ccc480715fc49a /gcc/tree-ssa-pre.c | |
parent | d2f4c25adf9483a3ca4afc50bc214f9f39bfbdfe (diff) | |
download | gcc-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.c | 9 |
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); |