commit cdd117e59b232f95c4749d678f5f6c780c89fd6e
Author: Maxim Kuvyrkov <maxim@codesourcery.com>
Date:   Thu Mar 17 08:29:16 2011 -0700

    Handle pointers

diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 491bb11..0b08043 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -647,10 +647,18 @@ compute_known_type_jump_func (tree op, struct ipa_jump_func *jfunc,
   tree base;
 
   if (!flag_devirtualize
-      || TREE_CODE (op) != ADDR_EXPR
+      || (TREE_CODE (op) != SSA_NAME
+	  && TREE_CODE (op) != ADDR_EXPR)
       || TREE_CODE (TREE_TYPE (TREE_TYPE (op))) != RECORD_TYPE)
     return;
 
+  if (TREE_CODE (op) == SSA_NAME)
+    {
+      detect_type_change_ssa (op, call, jfunc);
+      return;
+    }
+
+  gcc_assert (TREE_CODE (op) == ADDR_EXPR);
   op = TREE_OPERAND (op, 0);
   base = get_ref_base_and_extent (op, &offset, &size, &max_size);
   if (!DECL_P (base)
