* gimple-fold.c (fold_gimple_assign): Fix condition guarding
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Jul 2014 09:36:36 +0000 (09:36 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 29 Jul 2014 09:36:36 +0000 (09:36 +0000)
ipa-devirt path; fix thinko there.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213150 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gimple-fold.c

index 71660a1..8f1a133 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * gimple-fold.c (fold_gimple_assign): Fix condition guarding
+       ipa-devirt path; fix thinko there.
+
 2014-07-28  Trevor Saunders  <tsaunders@mozilla.com>
 
        * config/i386/i386.c (ix86_return_in_memory): replace one
index 747c0aa..2e0f2bf 100644 (file)
@@ -372,11 +372,11 @@ fold_gimple_assign (gimple_stmt_iterator *si)
            tree val = OBJ_TYPE_REF_EXPR (rhs);
            if (is_gimple_min_invariant (val))
              return val;
-           else if (flag_devirtualize && virtual_method_call_p (val))
+           else if (flag_devirtualize && virtual_method_call_p (rhs))
              {
                bool final;
                vec <cgraph_node *>targets
-                 = possible_polymorphic_call_targets (val, stmt, &final);
+                 = possible_polymorphic_call_targets (rhs, stmt, &final);
                if (final && targets.length () <= 1 && dbg_cnt (devirt))
                  {
                    tree fndecl;
@@ -395,7 +395,8 @@ fold_gimple_assign (gimple_stmt_iterator *si)
                                         ? targets[0]->name ()
                                         : "__builtin_unreachable");
                      }
-                   val = fold_convert (TREE_TYPE (val), fndecl);
+                   val = fold_convert (TREE_TYPE (val),
+                                       build_fold_addr_expr_loc (loc, fndecl));
                    STRIP_USELESS_TYPE_CONVERSION (val);
                    return val;
                  }