gimple-fold.c (fold_gimple_assign): Fix condition guarding ipa-devirt path; fix think...
authorJan Hubicka <hubicka@ucw.cz>
Tue, 29 Jul 2014 09:36:36 +0000 (11:36 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 29 Jul 2014 09:36:36 +0000 (09:36 +0000)
* gimple-fold.c (fold_gimple_assign): Fix condition guarding
ipa-devirt path; fix thinko there.

From-SVN: r213150

gcc/ChangeLog
gcc/gimple-fold.c

index 71660a1fc96d56a90f1220c4b44a607747af5fce..8f1a133261e85aeec008396d7350680f05a3b5b4 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 747c0aa0b359cc947324069217f731f2672e346f..2e0f2bff4388e0a2107391f1cb7cdebbc5460223 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;
                  }